Conveyor Controllers

ABSTRACT

Various methods, apparatuses, and program products that are used to control at least a portion of a conveyor, determine information about an article conveyed by the conveyor, or otherwise operate a conveyor are provided. One method includes detecting whether a second conveyor controller is connected to the first conveyor controller and, in response to detecting that there is a second conveyor controller connected to the first conveyor controller, identifying whether the second conveyor controller is connected to a predetermined network interface of the first conveyor controller. The method further includes configuring the first conveyor controller to rotate a motorized roller in a first predetermined direction if a second conveyor controller is connected to the predetermined network interface and configuring the first conveyor controller to rotate the motorized roller in a second predetermined direction if a second conveyor controller is not connected to the predetermined network interface.

FIELD OF THE INVENTION

The present invention relates controlling conveyor systems withnetworked conveyor controllers

BACKGROUND OF THE INVENTION

Conveyors are used in a number of applications to convey an article froma first point to a second point. As an example, conventional conveyorscan include roller conveyors, which include a plurality of motorized andnon-motorized rollers, as well as belt conveyors, which include beltsthat are driven by one or more motorized rollers. Typically, one or moresections of the conventional conveyor are controlled by a controller,such as a computer. The controller generally controls the motorizedrollers or motors that operate the belt of the conveyor to move anarticle along the conveyor. In conventional conveyor controllers, thecontroller also attempts to keep track of whether an article is beingconveyed by monitoring sensors, such as photo-eyes, configured on theconveyor.

However, conventional controllers for conveyor systems often lack thecapability for advanced control of feedback. For example, conventionalcontrollers are able to determine whether an article is sensed by aphoto-eye but unable to discern any additional information about thatarticle. Moreover, conventional controllers are often unable to trackdifferently sized articles as they move through various portions of theconveyor. This, in turn, can result in a jam situation or result incollisions between articles. In any event, information about the articleitself is often unknown or indeterminable.

Moreover, conventional controllers are often difficult to maintain andreplace. For example, a conveyor typically includes multiplecontrollers. But each controller of the conveyor must be programmed towork with the other controllers. Conventional programming of multiplecontrollers has often involved programming each individually thenattempting to operate them together. But this conventional programmingis time consuming and laborious, often involving dip-switch setting andcomplex algorithmic management to implement even a simple run of aconveyor (e.g., a “linear” conveyor without any diverts or mergers).

Also for example, some conventional controllers may require that eachcontroller for a conveyor is reprogrammed if even one is replaced.Moreover, in the event that all conventional controllers need not bereprogrammed simply to replace one, conventional replacement of acontroller often involves programming that replacement controller aheadof time. This can be a laborious process, as the exact configuration ofa previous controller may not be available, requiring the configurationto be recreated from scratch.

Consequently, there is a continuing need for improving control ofconveyors and the controllers that perform such control of conveyors.

SUMMARY OF THE INVENTION

Embodiments of the invention include various methods, apparatuses, andprogram products that are used to control at least a portion of aconveyor, determine information about an article conveyed by theconveyor, or otherwise operate a conveyor. In one embodiment, a methodincludes detecting whether a second conveyor controller is connected tothe first conveyor controller and, in response to detecting that thereis a second conveyor controller connected to the first conveyorcontroller, identifying whether the second conveyor controller isconnected to a predetermined network interface of the first conveyorcontroller. The method further includes configuring the first conveyorcontroller to rotate a motorized roller in a first predetermineddirection if a second conveyor controller is connected to thepredetermined network interface and configuring the first conveyorcontroller to rotate the motorized roller in a second predetermineddirection if a second conveyor controller is not connected to thepredetermined network interface.

In another embodiment, a method includes, in response to receiving firstconfiguration data from a first conveyor controller at a second conveyorcontroller, detecting whether a third conveyor controller is connectedto the second conveyor controller. The method further includes,transmitting a configuration message to a third conveyor controller thatincludes second configuration data associated with the second conveyorcontroller if the third conveyor controller is connected to the secondconveyor controller and determining that the second conveyor controlleris a final conveyor controller of a linear conveyor if the thirdconveyor controller is not connected to the second conveyor controller.

In yet another embodiment, a method includes receiving and storingconfiguration data associated with a second conveyor controllerconnected to the first conveyor controller and, in response to a firstrequest for data from a third conveyor controller intended to replacethe second conveyor controller, transmitting the configuration data tothe third conveyor controller.

In still a further embodiment, a method includes in response to userinput to a first conveyor controller to automatically configure thefirst conveyor controller, requesting configuration data from a secondconveyor controller connected to the first conveyor controller and, inresponse to receiving the configuration data, storing the configurationdata in the first conveyor controller.

In another embodiment, a method includes monitoring a motorized rollerfor at least partial rotation thereof and, in response to detecting theat least partial rotation of the motorized roller, determining a lengthof time for the at least partial rotation. The method further includes,in response to determining that the length of time is greater than atarget time, activating the motorized roller.

An additional embodiment includes a method that in turn includes, inresponse to a determination to prevent rotation of a motorized roller,identifying a rotational position associated with the motorized rollerwhen the motorized roller is stopped and, in response to an externalforce on the motorized roller, applying a voltage signal to themotorized roller to maintain the roller at the identified rotationalposition.

Another embodiment includes a method that in turn includes detecting aphoto-eye sensor connected to the conveyor controller, including whetherthe photo-eye sensor is light-operated or dark-operated, detecting amotorized roller connected to the conveyor controller, includinginformation about the motorized roller, and automatically configuring atleast one of a speed to operate the motorized roller, a rate at which toaccelerate the motorized roller, a rate at which to decelerate themotorized roller, or combinations thereof.

In yet another additional embodiment, a method includes querying amotorized roller for data associated therewith, in response to receivingthe data, analyzing the data to determine an operational characteristicassociated with the motorized roller, and controlling the motorizedroller based at least in part upon the determined operationalcharacteristic.

A still further additional embodiment includes a method that in turnincludes operating a motorized roller to rotate in a first directioncorresponding to a direction of travel and, in response to detectingthat a jam has occurred, operating the motorized roller to rotate in asecond direction opposite the first direction.

Yet another embodiment is a method that includes sensing a current of asignal used to operate a motorized roller and determining a weightassociated with the article based upon the sensed current. A stillfurther embodiment is a method that includes determining a time duringwhich a photo-eye detects an article as the article is conveyed alongthe at least a portion of the conveyor and determining a lengthassociated with the article based upon the determined time.

Yet another embodiment is a method that includes determining a rate ofrotation associated with a motorized roller, connecting a first voltagesignal generated by the rotation of the motorized roller to a powersupply of the conveyor controller to supply the power supply with energygenerated by the motorized roller if the rotation of the motorizedroller does not exceed a target speed, and supplying a second voltagesignal to the motorized roller to reduce the rate of rotation thereof ifthe rotation of the motorized roller exceeds the target speed.

In another embodiment, a method includes determining whether a currentthrough a motorized roller is associated with a low level to indicatethat the motorized roller is conveying a first article, in response todetermining that the motorized roller is conveying the first article,determining whether the current through the motorized roller isassociated with a high level to indicate that the first article hasencountered a second article, and, in response to determining that thefirst article has jammed or encountered a second article, conveying thefirst and second articles simultaneously and without substantial gaptherebetween during such conveyance.

A still further embodiment is a method of controlling at least a portionof a conveyor with a conveyor controller in a conveyor system having atleast one downstream conveyor controller and at least one upstreamconveyor controller to the conveyor controller. The method includessending a message to the downstream conveyor controller to request datato determine whether at least a portion of the conveyor controlledthereby is occupied by an article. If the at least a portion of theconveyor controlled by the downstream conveyor controller is notoccupied by an article, the method includes operating a motorized rollerto convey an incoming article at a target speed. However, if the atleast a portion of the conveyor controlled by the downstream conveyorcontroller is occupied by an article, the method includes operating themotorized roller to convey an incoming article at an adjusted targetspeed that is slower than the target speed

These and other advantages will be apparent in light of the followingfigures and detailed description.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of this specification, illustrate embodiments of the invention and,together with a general description of the invention given above and thedetailed description of the embodiments given below, serve to explainthe principles of the invention.

FIG. 1 is a perspective illustration of a portion of a conveyor systemthat uses one or more modular conveyor controllers consistent withembodiments of the invention;

FIG. 2 is a diagrammatic illustration of a controller of FIG. 1;

FIG. 3 is a diagrammatic illustration of a computer connected to thecontrollers of FIG. 1;

FIG. 4 is a partial cut-away perspective view of a motorized roller ofthe conveyor system of FIG. 1;

FIG. 5 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1. during the automaticconfiguration thereof;

FIG. 6 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1 during the automatic configurationthereof when such controller is a downstream controller;

FIG. 7 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1 to abort the automaticconfiguration thereof;

FIG. 8 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1 to automatically configure itselfas the first controller of a linear conveyor;

FIG. 9 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1 to detect characteristics of atleast a portion of the conveyor system to which it is configured;

FIG. 10 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1 to determine which direction torotate and adjust its operations accordingly;

FIG. 11 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1 to detect and accumulate anarticle being transported based on the current to a motorized rollerconnected thereto;

FIG. 12 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1 to stop a motorized roller using aservo-lock method;

FIG. 13 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1 to initiate an automaticreplacement procedure;

FIG. 14 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1 to automatically recover a networkaddress of a previous controller during an automatic replacementprocedure;

FIG. 15 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1 to operate in a “touch-and-go”mode;

FIG. 16 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1 to operate in a“look-ahead-slow-down” mode;

FIG. 17 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1 to determine whether a downstreamzone is being operated at a target speed;

FIG. 18 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1 to initiate a jam clearingprocedure;

FIG. 19 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1 to clear a jam;

FIG. 20 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1 to reduce the rotational speed ofa motorized roller; and

FIG. 21 is a flowchart illustrating a sequence of operations that may beperformed by the controller of FIG. 1 to determine an operationalcharacteristic of a motorized roller and, optionally, control thatmotorized roller based upon that operational characteristic.

It should be understood that the appended drawings are not necessarilyto scale, presenting a somewhat simplified representation of variousfeatures illustrative of the basic principles of embodiments of theinvention. The specific design features of embodiments of the inventionas disclosed herein, including, for example, specific dimensions,orientations, locations, and shapes of various illustrated components,as well as specific sequences of operations (e.g., including concurrentand/or sequential operations), will be determined in part by theparticular intended application and use environment. Certain features ofthe illustrated embodiments may have been enlarged or distorted relativeto others to facilitate visualization and clear understanding.

DETAILED DESCRIPTION

FIG. 1 is a perspective illustration of a portion of a conveyor system10 that uses one or more modular conveyor controllers 12 a-c consistentwith embodiments of the invention. In particular, the illustratedportion of the conveyor system 10 includes a conveyor assembly 14 whichin turn includes a conveyor belt 16 that has motorized rollers 18interspersed with non-motorized rollers 20. The conveyor assembly 14further includes a plurality of sensors 22 and a power supply unit 24.The sensors 22 are configured to detect the presence or absence of anarticle 23 conveyed on the conveyor assembly 14, while the power supplyunit 24 is configured to provide power to one or more modular conveyorcontrollers 12, the motorized rollers 18, and/or the sensors 22.

As illustrated in FIG. 1, each modular conveyor controller 12 (referredto hereinafter as “controller” 12) interfaces with and/or controls up totwo motorized rollers 18 and up to two sensors 22. As such, eachcontroller 12 may be configured to control one or more respective“zones” of the conveyor assembly 14 (e.g., a respective area of theconveyor assembly 14). Each zone, in turn, may include one or moremotorized rollers 18 and one or more sensors 22. As illustrated in FIG.1, each controller 12 a-c is configured to control two zones. Morespecifically, controller 12 a is configured to control zones A1 and A2,controller 12 b is configured to control zones B1 and B2, and controller12 c is configured to control zones C1 and C2. In some embodiments, eachsensor 22 may be an optical sensor, such as an IR sensor that isconfigured to detect the presence of an article 23 on the conveyorassembly 14. In operation, one or more controllers 12 are configured tomove an article 23 in a downstream direction 26 along the conveyorsystem 10.

FIG. 2 is a diagrammatic illustration of a hardware and softwareenvironment of a controller 12 consistent with embodiments of theinvention. The controller 12 includes at least one central processingunit (“CPU”) 40 coupled to a memory 42. Each CPU 40 is typicallyimplemented in hardware using circuit logic disposed in one or morephysical integrated circuit devices, or chips, and may be comprised ofone or more microprocessors, micro-controllers, field programmable gatearrays (“FPGAs”), or ASICs. Memory 42 may include random access memory(“RAM”), dynamic random access memory (“DRAM”), static random accessmemory (“SRAM”), flash memory, electronically erasable programmableread-only memory (“EEPROM”) and/or another digital storage medium, andis also typically implemented using circuit logic disposed on one ormore physical integrated circuit devices, or chips. As such, memory 42may be considered to include memory storage physically located elsewherein the controller 12, e.g., any cache memory in the a CPU 40, as well asany storage capacity used as a virtual memory, e.g., as stored on acomputing system 90 (FIG. 2) or another controller 12 coupled to thecontroller 12 through at least one network interface 44 a, 44 b(illustrated as “Network A Interface” 44 a and “Network B Interface 44b).

The controller 12 is configured to couple to up to two motorized rollers18 through respective motor interfaces 46 a, 46 b (illustrated as “MotorA Interface” 46 a and “Motor B Interface” 46 b). In particular, the CPU40 is configured to control the motors (not shown) of the motorizedrollers 18 by selectively providing power to the motors as well asdetermining the rotational state of the motorized rollers 18. Each motorinterface 46 a, 46 b allows the CPU 40 to provide power to and determineinformation about a motor of a motorized roller 18. In particular, themotor interface 46 a, 46 b may be generally utilized for brushless DC(“BLDC”) motor commutation control to control the rotational speed of amotorized roller 18. More specifically, the motor interface 46 a, 46 bincludes the ability to selectively energize particular windings of amotor connected thereto to turn a motorized roller, sense the currentconsumed by the motor connected thereto, and detect the rotational stateof the motor connected thereto. The motor interface 46 a, 46 b may alsoinclude the ability to control a brake (not shown) associated with themotor.

In addition to the motorized rollers 18, the CPU 40 is configured tocouple to up to two sensors 22 through respective sensor interfaces 48a, 48 b (illustrated as “Sensor A Interface” 48 a and “Sensor BInterface” 48 b). The controller 12 is also configured to couple to upto two pieces of additional hardware (not shown) (e.g., such asadditional sensors 22 that are not connected through the sensorinterfaces 48 a, 48 b) through respective hardware interfaces 49 a, 49 b(illustrated as “Hardware A Interface” 49 a and “Hardware B Interface”49 b). The controller 12 is configured to receive power from the powersupply unit 24 through a power input and conditioning interface 50.

The CPU 40 is further configured to receive input from a user and/orprovide a human-perceptible output to a user through an input/outputdevice interface 52 (illustrated and referred to hereinafter as “I/OI/F” 52). In some embodiments, the I/O I/F 52 is configured to receivedata from the user through at least one user interface 54 (including,for example, one or more softkeys, a keyboard, mouse, a microphone,and/or other user interface), and/or provide a human-perceptible outputto the user through at least one output device 56 (including, forexample, one or more LEDs providing specific information, a display,speakers, a printer, and/or another output device). In some embodiments,the I/O I/F 52 communicates with a device that is operative as a userinterface 54 and output device 56 in combination, such as a touch screendisplay (not shown). In specific embodiments, the at least one userinterface 54 includes a softkey that, upon an actuation lasting a firstpredetermined amount of time, allows the CPU 40 to determine that theuser desires to automatically configure a plurality of controllers 12,and, upon an actuation lasting a second predetermined amount of time,allows the CPU 40 to determine that the user desires to reset thecontroller 12. In further specific embodiments, the at least one outputdevice 56 includes a plurality of LEDs that indicate, respectively,network connectivity through the network interfaces 44 a, 44 b, networktraffic through the network interfaces 44 a, 44 b, a status of a networkto which the controller 12 is connected, a status of one or morerespective motors of respective motorized rollers 18 connected to themotor interfaces 46 a, 46 b, a status of one or more respective sensors22 connected to the sensor interfaces 48 a, 48 b, a status of one ormore respective pieces of hardware connected to the hardware interfaces49 a, 49 b, a status of power to the controller 12, and/or a status ofthe controller 12.

The controller 12 is typically under the control of firmware 57 as wellas an operating system, application, and/or other program codeconfigured to control the controller 12 (illustrated and referred tohereinafter as “Control Code”) 58. As such, the controller 12 executesor otherwise relies upon various computer software applications,sequences of operations, components, programs, files, objects, modules,etc., consistent with embodiments of the invention. In specificembodiments, the firmware 57 includes data to control the components ofthe controller 12 while the control code 58 is executed to performvarious operations consistent with embodiments of the invention. Thecontroller 12 also includes a network server 59, which may include a webserver and/or a DHCP server. As such, the network server 59 allows aseparate computing system 90 (FIG. 3) to directly access informationfrom the controller 12 through a network 82 (FIG. 3) and/or allows theseparate computing system 90 to be directly connected to the controller12 to automatically configure a TCP/IP connection therewith.

The controller 12 is also configured with a mass storage device 60 thatmay store data for to operate the controller 12 or other controllers 12.In specific embodiments, the mass storage device 60 includes theconfiguration data of the controller 12 as well as the configurationdata for adjacent controllers 12 in a configuration data structure 62.The mass storage may also store parameters for operation, such as its IPaddress, subnet mask, gateway, and other data structures, such as listsor lookup tables, that may be used to in the configuration and/oroperation of the controller 12 in a parameters data structure 64.

The controller 12 may be configured to operate alone or in conjunctionwith at least one additional controller 12. Moreover, the controller 12may be configured to controlled externally, such as with theaforementioned computing system 90. As such, and consistent withembodiments of the invention, FIG. 3 is a diagrammatic illustrationshowing interconnection between a plurality of controllers 12 a-c viacommunication links 80 a-c as well as the connection of one or morecontrollers 12 to at least one network 82 for control thereby with acomputing system 90. In specific embodiments, each communication link 80between controllers 12 is achieved through a network cable, such as aCategory 5 cable used for Ethernet network communications. Onecontroller 12 a may be configured to communicate with a separatecontroller 12 b, 12 c directly (e.g., in the case of controller 12 b) orindirectly (e.g., in the case of controller 12 c).

As discussed above, the conveyor system 10 may include a computingsystem 90 operable to control the controllers 12 a-c and thus theoperation of the conveyor system 10. The computing system 90 includes atleast CPU 92 coupled to a memory 94. Each CPU 92 is typicallyimplemented in hardware using circuit logic disposed on one or morephysical integrated circuit devices or chips and may be one or moremicroprocessors, micro-controllers, FPGAs, or ASICs. Memory 94 mayinclude RAM, DRAM, SRAM, flash memory, and/or another digital storagemedium, and also typically implemented using circuit logic disposed onone or more physical integrated circuit devices, or chips. As such,memory 94 may be considered to include memory storage physically locatedelsewhere in the computing system 90, e.g., any cache memory in the atleast one CPU 92, as well as any storage capacity used as a virtualmemory, e.g., as stored on a mass storage device 96, another computingsystem (not shown), a network storage device (e.g., a tape drive) (notshown), or another network device (not shown) coupled to the computingsystem 90 through at least one network interface 98 (illustrated andreferred to hereinafter as “network I/F” 98) by way of the at least onenetwork 82. The network I/F 90 may be connected to the network 92wirelessly (e.g., through one of the numerous IEEE 802 standards) orthrough a hard-wire link (e.g., an Ethernet cable). It will beappreciated that the at least one network 82 may include at least oneprivate communications network (e.g., such as an intranet) and/or atleast one public communications network (e.g., such as the Internet).

As such, the computing system 90, in specific embodiments, is acomputer, computer system, computing device, server, disk array, orprogrammable device such as a multi user computer, a single-usercomputer, a handheld computing device, a networked device (including acomputer in a cluster configuration), a mobile telecommunicationsdevice, a telecommunications capable device, a video game console (orother gaming system), etc. In specific embodiments, the computing system90 is an iPhone® or iPad® as distributed by Apple Inc., of Cupertino,Calif.

The computing system 90 is coupled to at least one peripheral devicethrough an input/output device interface 102 (illustrated as, andhereinafter, “I/O I/F” 102). In particular, the computing system 90receives data from a user through at least one user interface 104(including, for example, a keyboard, mouse, a microphone, and/or otheruser interface) and/or outputs data to the user through at least oneoutput device 106 (including, for example, a display, speakers, aprinter, and/or another output device). Moreover, in some embodiments,the I/O I/F 102 communicates with a device that is operative as a userinterface 104 and output device 106 in combination, such as a touchscreen display (not shown).

The computing system 90 is typically under the control of an operatingsystem 108 and executes or otherwise relies upon various computersoftware applications, sequences of operations, components, programs,files, objects, modules, etc., consistent with embodiments of theinvention. In specific embodiments, the computing system 90 executes orotherwise relies on a control application 110 to manage the operation ofthe controllers 12 a-c and the conveyor system 10.

Consistent with embodiments of the invention, a controller 12 may beconfigured to operate in an autonomous fashion, a collectivelyautonomous fashion, or a dependent fashion. When operating in anautonomous fashion, the controller 12 is not controlled by the computingsystem 90 and operates without any concern to one or more controllers 12located upstream or downstream along the downstream direction 26, ifany. As such, the controller 12 simply controls a portion of theconveyor assembly 14 to convey an article 23 along the downstreamdirection 26 without regard to additional controllers 12. The autonomousoperation may be advantageous when there is conveyor system 10 that doesnot require additional controllers 12 and merely operates toconsistently move articles 23 along that surface. When operating in acollective fashion, multiple controllers 12 are configured to shareinformation upstream and/or downstream in order to move the article 23in the downstream direction 26, but are not otherwise controlled by thecomputing system 90. The collective operation may be advantageous whenthere is a conveyor system 10 that does not include merges, joins,article sorting, or other article manipulating sections (but maynevertheless include turns, inclines, declines) and is used to convey anarticle 23 along a path. When operating in a dependent fashion, one ormore controllers 12 are configured to be controlled by the computingsystem 90. The dependent operation may be advantageous when there is aconveyor system 10 that includes merges, joins, article sorting, and/orother article manipulating sections that requires complex movement andadjustment of articles 23 as they are conveyed along the conveyor system10.

In any event, the controllers 12 include a number of operations,operational modes, and functions that assist in conveying articles. Forexample, a controller 12 is configured to automatically determineinformation about the conveyor assembly 14 to which it is connected, andmore particularly information about the motorized rollers 18, sensors22, and/or additional hardware configured thereupon. The controllers 12,in turn, use BLDC commutation control to control the rotational speedand/or state of the motorized rollers 18. The controllers 12 may alsouse current feedback from a motorized roller 18 to determine whether anarticle 23 is being conveyed as well as use rotation feedback from themotorized roller 18 to determine the position of an article 23 beingconveyed. The controller 12 may also use the current feedback, rotationfeedback, and/or additional information to determine the weight andlength of the article 23.

In addition to providing power to rotate a motorized roller 18, thecontroller 12 is configured to stop the motorized roller 18 in a numberof ways. For example, conventional methods of stopping a motorizedroller 18 include shunting windings of the motor of the motorized roller18 to ground or engaging a brake (not shown) of the motorized roller 18.However, the controller 12 may be configured to stop a motorized roller18 through a gravity stop or through a servo-lock stop. With a gravitystop, the controller 12 may disconnect the motor of the motorized roller18 from any ground signal or power signal. Advantageously, the gravitystop allows the motorized roller 18 to briefly rotate after the powerthereto has been stopped, but otherwise prevents excessive power usageby the motorized rollers 18. In the servo-lock stop, the controller 12maintains the motorized roller 18 at the rotational position at which ithas stopped. For example, if the motorized roller 18 is on an incline ordecline, the servo-lock stop allows the controller 12 to maintain themotorized roller 18 at a particular rotational position, advantageouslymaintaining an article 23 loading that motorized roller 18 at aparticular position.

Multiple controllers 12 networked together (such as in a conveyor system10 having a linear conveyor or other conveyor run) may automaticallyconfigure themselves when configured in an uninterrupted path of one ormore conveyor assemblies 14 with no merge or divert mechanisms, butpossibly curved sections. This arrangement is more commonly referred toas a “linear conveyor.” As such, the controllers 12 are configured alongthe linear conveyor and interconnected via communication links 80. Thefurthest upstream controller 12 may then be interfaced with (such asthrough a user interface 54 that includes a softkey) to begin anautomatic configuration procedure. The automatic configurationprocedure, discussed in more detail below, automatically configures eachof the controllers 12 to control one or more respective zones of thelinear conveyor such that the linear conveyor may be used to conveyarticles 23 thereon in the downstream direction 26.

The controllers 12 communicate with each other through thecommunications links 80 to access information about zones, articles 23,and controllers 12 upstream and downstream to dynamically adjust theoperation of the conveyor system 10. The controllers 12 also storeconfiguration of each controller 12 to which they are adjacent. Forexample, when a conveyor system 10 includes a plurality of controllers,the first controller 12 (e.g., most upstream controller in a downstreamdirection 26) stores its configuration data and the configuration dataof the second controller 12, the second controller 12 stores itsconfiguration data and the configuration data of the first controller 12and third controller 12 (if present), and so-on with the last controller12 storing its configuration data and the configuration data of thenext-to-last controller 12. As such, when a controller 12 is removed,the replacement controller 12 may automatically access appropriatestored configuration data in an adjacent controller 12. The controllers12 may use UDP for transferring configuration data, Modbus TCP forcontroller-to-controller communication, and Ethernet/IP for othercommunications.

Controllers 12 may be used to convey articles 23 along a conveyor system10 in a zone singulation mode (in which there is a zone gap betweenarticles), a flex zone mode (in which first article is longer than asecond article such that the first article is assigned more zones thanthat second article), a train mode (in which all upstream zones from adownstream zone run articles in a “train” when the downstream zonereleases an article), and a gap train mode (which is similar to thetrain mode, but is a mode in which the controllers 12 configure a timedelay between the articles in the train).

One additional mode of operation for the controllers 12 is a mode inwhich a controller 12 detects the movement of a motorized roller 18 thatwas previously stationary and then activates one or more motorizedrollers 18 connected thereto to move an article 23 along the conveyorsystem 10. For example, an article 23 may be situated on a conveyorsystem 10 and stationary. When a user pushes the article 23 along theconveyor system 10, a motorized roller 18 associated therewith isrotated. A controller 12 senses this motion, conveys the article 23through its zones, and sends messages to at least one downstreamcontroller 12 to convey the article 23 as well. This “touch and go” modemay be advantageous in facilities where leaving conveyor systems 10constantly running (e.g., leaving motorized rollers 18 constantlyturning) is inefficient, unwanted, or unnecessary. As such, a user maystart the conveyor system 10 by placing an article 23 thereon andpushing the article therealong. In one embodiment, the controllers 12 ofthe conveyor system 10 activate the motorized rollers 18 until allarticles 23 on the conveyor system 10 have been discharged. In analternative embodiment, the controllers 12 of the conveyor system 10gradually increase and decrease the speed of the motorized rollers 18for respective zones as the articles 23 are adjacent to or pass throughthose zones until all articles 23 on the conveyor system 10 have beendischarged.

During operation, the controllers 12 can “look ahead” to at least onedownstream zone to determine whether it is occupied by an article 23,and adjust the speed of the motorized rollers 18 accordingly. In thismanner, higher speed applications where increased stopping distance isrequired can keep the articles 23 from over-traveling their stoppositions. This “look-ahead-slow-down” mode also allows the controllers12 to keep from losing articles 23 between zones, which may happen ifmomentum carries an article 23 that is to be slowed in the area betweenzones where it may not be sensed by a sensor 22.

The controllers 12 are also configured to detect jams, or potentialjams, when an article 23 does not reach a sensor 22 within apredetermined amount of time, or when an article 23 is constantlydetected by a sensor 22 for a predetermined amount of time. When a jamis detected, the controller 12 may reverse an appropriate motorizedroller 18 in an attempt to clear that jam.

FIG. 4 is a partially transparent view of a motorized roller 18consistent with embodiments of the invention. The motorized roller 18 isconnected to a controller 12 through various wires as at 102. In turn,the wires 102 may provide various signals or connection (e.g., a voltagesignal, a current signal, a connection to ground) to one or morecomponents of the motorized roller 18. More specifically, the wires 102may carry one or more signals, such as a voltage, current, or groundsignal, for a motor 104 of the motorized roller. The motor 104, whenenergized, rotates and turns a gearbox 106. The gearbox 106 is coupledto the housing 108 of the motorized roller 18 and operates to translatethe rotation of the motor 104 into rotation of the housing 108 at afixed ratio. In specific embodiments, the gearbox 106 may operate totranslate sixty rotations of the motor 104 into one rotation of thehousing 108 such that the gearbox 106 has a ratio of approximately 60-1.Moreover, the motorized roller 18 may include one or more addressablecircuits 110, such as processing circuitry with memory, that can bequeried for information associated with the motorized roller 18. Assuch, a controller 12 connected to the motorized roller 18 may query themotorized roller 18, and in particular the addressable circuit 110thereof, for information and determine at least one operationalcharacteristic associated with that motorized roller 18. For example,the operational characteristic may include a gear ratio of the gearbox106 or a current threshold (e.g., a maximum current) for the motor. Thecontroller 12 may then determine information and/or control themotorized roller 18 accordingly (e.g., determine the distance ofrotation of the housing 108 of the motorized roller 18 from a pulse ofvoltage and/or keep the current supplied to the motorized roller 18below the current threshold).

A person having ordinary skill in the art will recognize that theenvironments illustrated in FIGS. 1-4 are not intended to limit thescope of embodiments of the invention. In particular, conveyor system10, controller 12, and/or computing system 90 may include fewer oradditional components consistent with alternative embodiments of theinvention. Indeed, a person having skill in the art will recognize thatother alternative hardware and/or software environments may be usedwithout departing from the scope of the invention. Additionally, aperson having ordinary skill in the art will appreciate that thecontroller 12 and/or computing system 90 may include more or fewerapplications configured therein. As such, other alternative hardware andsoftware environments may be used without departing from the scope ofembodiments of the invention.

The routines executed to implement the embodiments of the invention,whether implemented as part of an operating system or a specificapplication, component, program, object, module or sequence ofinstructions executed by one or more controllers 12 and/or computingsystems 90 will be referred to herein as a “sequence of operations,” a“program product,” or, more simply, “program code.” The program codetypically comprises one or more instructions that are resident atvarious times in various memory and storage devices in a controller 12and/or computing system 90, and that, when read and executed by one ormore CPUs 40 and/or 92 of the respective controllers 12 and/or computingsystem 90, cause that controller 12 and/or computing system 90 toperform the steps necessary to execute steps, elements, and/or blocksembodying the various aspects of the invention.

While the invention has and hereinafter will be described in the contextof fully functioning controllers 12 and/or computing systems 90, thoseskilled in the art will appreciate that the various embodiments of theinvention are capable of being distributed as a program product in avariety of forms, and that the invention applies equally regardless ofthe particular type of computer readable signal bearing media used toactually carry out the distribution. Examples of computer readablesignal bearing media include but are not limited to physical andtangible recordable type media such as volatile and nonvolatile memorydevices, floppy and other removable disks, hard disk drives, opticaldisks (e.g., CD-ROM's, DVD's, etc.), among others.

In addition, various program code described hereinabove or hereinaftermay be identified based upon the application or software componentwithin which it is implemented in a specific embodiment of theinvention. However, it should be appreciated that any particular programnomenclature is used merely for convenience, and thus the inventionshould not be limited to use solely in any specific applicationidentified and/or implied by such nomenclature. Furthermore, given thetypically endless number of manners in which computer programs may beorganized into routines, procedures, methods, modules, objects, and thelike, as well as the various manners in which program functionality maybe allocated among various software layers that are resident within atypical computer (e.g., operating systems, libraries, APIs,applications, applets, etc.), it should be appreciated that theinvention is not limited to the specific organization and allocation ofprogram functionality described herein.

In some embodiments, the controllers 12 of the conveyor system 10 areconfigured by the computing system 90. As such, each the computingsystem 90 designates the function of each controller 12 and how it is tooperate in the conveyor system 10. However, in alternative embodiments,at least a portion of the conveyor system 10 is a linear conveyor. Assuch, the controllers 12 for the linear conveyor may be configured in anautomatic configuration procedure consistent with embodiments of theinvention. FIG. 5 is a flowchart 200 illustrating a sequence ofoperations that may be performed by a controller 12 during an automaticconfiguration procedure. In particular, the sequence of operations ofFIG. 5 may be performed by a controller 12 configured as the initialcontroller 12 of a linear conveyor. As such, the controller 12determines whether to initiate an automatic configuration procedure(block 202). Specifically, a user may initiate an automaticconfiguration procedure by pressing and holding a softkey of a userinterface 54 for a predetermined amount of time. When the controller 12determines not to initiate an automatic configuration procedure (“No”branch of decision block 202), the sequence of operations returns toblock 202. When the controller 12 determines to initiate an automaticconfiguration procedure (“Yes” branch of decision block 202), thecontroller 12 determines whether there are upstream and downstreamcontrollers 12 connected thereto.

In some embodiments, the controller 12 determines whether there areupstream and downstream controllers 12 connected thereto by polling itsnetwork interfaces 44 a, 44 b to determine if controllers 12 areconnected thereto through communication links 80 a, 80 b. If there is aresponse to a poll on a network interface 44 a, 44 b, the controller 12determines that a controller 12 is connected to that network interface44 a, 44 b. When there are both upstream and downstream controllers 12connected to the network interfaces 44 a, 44 b of the controller 12initiating the automatic configuration procedure (“Yes” branch ofdecision block 204), the controller 12 indicates an error and aborts theautomatic configuration procedure (block 206). Advantageously,preventing an automatic configuration procedure for a controller 12 thatis situated between at least two additional controllers 12 preventsnetwork and resource contention. However, when there are not bothupstream and downstream controllers 12 connected to the networkinterfaces 44 a, 44 b of the controller 12 initiating the automaticconfiguration procedure (“No” branch of decision block 204), thecontroller 12 initiating the automatic configuration procedure (referredto hereinafter for this sequence of operations as the “first” controller12) initiates the automatic configuration procedure (block 208) anddetermines whether there are is a second controller 12 connected to oneof its network interfaces 44 a, 44 b (block 210).

When the first controller 12 determines that there is not a secondcontroller 12 connected to one of its network interfaces 44 a, 44 b(“No” branch of decision block 210), the first controller 12 configuresitself to operate in an autonomous fashion (block 212). However, whenthe first controller 12 determines that there is a second controller 12connected to one of its network interfaces 44 a, 44 b (“Yes” branch ofdecision block 210), the first controller 12 determines whether thesecond controller 12 is connected to its first network interface 44 a(block 214). Specifically, each controller 12 is configured with adefault that indicates that a downstream direction 26 is to proceed fromthe “A” side, or “left” side, of the controller 12 (e.g., the side withnetwork interface 44 a, motor interface 46 a, sensor interface 48 a, andhardware interface 49 a) to the “B” side, or “right” side of thecontroller 12 (e.g., the side with network interface 44 b, motorinterface 46 b, sensor interface 48 b, and hardware interface 49 b).Thus, when the second controller 12 is connected to the first networkinterface 44 a of the first controller 12 (“Yes” branch of decisionblock 214), the first controller 12 sets a flag to indicate that thedownstream direction 26 is reversed from its presumed direction (block216). However, when the second controller 12 is connected to the secondnetwork interface 44 b of the first controller (“No” branch of decisionblock 214), the first controller 12 clears a flag to indicate that thedownstream direction 26 is not reversed from its presumed direction(block 218).

In response to setting a flag or clearing a flag indicating whether thedownstream direction 26 is reversed from its presumed direction (block216 or block 218), the first controller 12 sets itself up as the“initial” controller 12 of a linear conveyor, and sends one or moremessages to the second, or “downstream,” controller 12 indicating theinitiation of an automatic configuration procedure as well asconfiguration data of the first controller 12 (block 220). In someembodiments, the first controller 12 sets itself as the initialcontroller 12 by setting its network address to a predetermined networkaddress. For example, if the current IP address of the first controlleris 192.168.0.45, the first controller 12 sets itself as the initialcontroller 12 by setting its IP address to 192.168.0.20. The firstcontroller 12 also sets itself as the initial controller 12 bydetermining its subnet mask and gateway and providing the subnet maskand gateway to downstream controllers 12. In any event, the firstcontroller 12 may send multiple messages in block 220, including a firstmessage (referred to hereinafter as an “configuration initiator”message) that indicates that the initiation of an automaticconfiguration procedure and a second message (referred to hereinafter asa “configuration token”) that includes at least the serial number of thefirst controller 12, its IP address, the subnet mask, and/or gateway ofthe first controller 12.

In any event, after sending the configuration initiator and/or theconfiguration token (block 220), the first controller 12 determineswhether multiple configuration confirmation messages from downstreamcontrollers 12 have been received (222). When multiple configurationconfirmation messages have not been received (“No” branch of decisionblock 222″), this indicates that there are not two independent networkbranches from the first controller 12 to downstream controllers 12, andthe sequence of operations may end. However, when multiple configurationmessages have been received (“Yes” branch of decision block 222), thisindicates that there are at least two independent network branches fromthe first controller 12 to downstream controllers 12, and thus the firstcontroller 12 indicates and error and aborts the automatic configurationprocedure (block 224).

FIG. 6 is a flowchart 230 illustrating a sequence of operations that maybe performed by a downstream controller 12 during an automaticconfiguration procedure consistent with embodiments of the invention.The downstream controller 12, upon being started, determines whether aconfiguration initiator message has been received from an upstreamcontroller 12 (e.g., the first controller 12 or a controller 12 betweenthe first controller 12 and the controller 12 performing this sequenceof operations) (block 232). When a configuration initiator message hasnot been received (“No” branch of decision block 232), the downstreamcontroller 12 may return to block 232. When a configuration initiatormessage has been received (“Yes” branch of decision block 232), thedownstream controller 12 determines whether it has received a validconfiguration token within a predetermined amount of time (e.g., twentyseconds) (block 234). For example, a configuration token may be invalidwhen at least some of the data expected therein is missing or corrupt.In any event, when the downstream controller 12 has not received a validconfiguration token within the predetermined amount of time, or when thecontroller 12 has received an invalid configuration token (“No” branchof decision block 234), the downstream controller 12 indicates and errorand aborts the automatic configuration procedure (block 236).

When the downstream controller 12 receives a valid configuration tokenwithin the predetermined amount of time (“Yes” branch of decision block234), the downstream controller 12 sets its network address based on thenetwork address included in the configuration token, determines thedownstream direction 26 based on which network interface the 44 a, 44 breceived configuration token, and otherwise configures itself to operatein a linear conveyor based on the data in the configuration token (block238). In specific embodiments, the downstream controller 12 sets itsnetwork address in block 238 by adding a fixed value to the receivednetwork address. For example, if the network address received in theconfiguration token is 192.168.0.24, the downstream controller 12 mayadd a fixed value of one to the network address and thus set its networkaddress to 192.168.0.25. Moreover, in block 238, the downstreamcontroller 12 determines that the downstream direction 26 is itspresumed direction when it receives the configuration token on networkinterface 44 a on its “A,” or “left,” side. Correspondingly thedownstream controller 12 determines that the downstream direction 26 isreversed from its presumed direction when the downstream controller 12receives the configuration token on network interface 44 b on its “B,”or “right,” side. Also in block 238, the downstream controller 12 setsits subnet mask, and/or gateway based on information in theconfiguration token.

After configuring itself to operate in a linear conveyor (block 238),the downstream controller 12 sends a configuration confirmation messageback upstream through the network interface 44 a, 44 b that received theconfiguration token (block 240) and sends a configuration initiatormessage and a configuration token for an additional downstreamcontroller 12 through the network interface 44 a, 44 b that did notreceive the configuration token (block 242). The downstream controller12 then determines whether multiple configuration confirmation messagesfrom additional downstream controllers 12 have been received (244). Whenmultiple configuration confirmation messages have been received (“Yes”branch of decision block 244), the downstream controller 12 indicatesand error and aborts the automatic configuration procedure (block 246).However, when multiple configuration confirmation messages have not beenreceived (e.g., one configuration confirmation message has been receivedor no configuration confirmation message has been received) (“No” branchof decision block 244), the downstream controller 12 determines whetherone configuration confirmation message has been received (block 248).When no configuration confirmation message has been received (“No”branch of decision block 248), the downstream controller 12 sends amessage (referred to hereinafter as a “last controller” message)indicating that it is the last controller 12 in a linear conveyor to thefirst controller 12 (e.g., through any upstream controllers 12previously configured) (block 250). In response to determining that aconfiguration confirmation message has been received (“Yes” branch ofdecision block 248) or sending a last controller message 12 (block 250),the sequence of operations may end.

FIG. 7 is a flowchart 260 illustrating a sequence of operations for asubroutine of a controller 12 (e.g., a first controller 12 or adownstream controller 12) to abort an automatic configuration procedureconsistent with embodiments of the invention. In particular, thesubroutine determines whether the controller 12 has aborted an automaticconfiguration procedure (block 262). When the controller 12 has abortedan automatic configuration procedure (“Yes” branch of decision block262), the subroutine causes the controller 12 to send an abort messageto any upstream and downstream controllers 12 connected thereto (block264). However, when the controller 12 has not aborted an automaticconfiguration procedure (“No” branch of decision block 262), thesubroutine determines whether the controller 12 has received an abortmessage on a network interface 44 a, 44 b (block 266). When thecontroller 12 has not received an abort message on a network interface44 a, 44 b (“No” branch of decision block 266), the sequence ofoperations returns to block 262. However, when the controller 12 hasreceived an abort message on a network interface 44 a, 44 b (“Yes”branch of decision block 266), the controller forwards the abort messagethrough the network interface 44 a, 44 b that did not receive the abortmessage (block 268). When the controller 12 sends an abort message(block 264) or forwards an abort message (block 268), the controller 12reverts its configuration data to the configuration used before theinitiation of an automatic configuration procedure (block 270).

FIG. 8 is a flowchart 280 illustrating a sequence of operations for afirst controller 12 of a linear conveyor to finalize the automaticconfiguration of the controllers 12 therein consistent with embodimentsof the invention. In particular, the first controller 12 determineswhether a predetermined time (e.g., about five minutes) in which toreceive an abort message or a last controller message has expired (block282). When the predetermined time has not expired (“No” branch ofdecision block 282), the sequence of operations may return to block 282.However, when the predetermined time has expired (“Yes” branch ofdecision block 282), the first controller 12 determines whether a lastcontroller message has been received (block 284). When a last controllermessage has not been received (“No” branch of decision block 284), thefirst controller 12 indicates and error and aborts the automaticconfiguration procedure (block 286). However, when a last controllermessage has been received (“Yes” branch of decision block 284), thefirst controller 12 sends a message to the downstream controllers 12 todetect characteristics of the portion of the conveyor system 10 to whichthey are attached, and performs its own detection of characteristics ofthe portion of the conveyor system 10 to which it is attached (block288). The first controller 12 then sends a message to the downstreamcontrollers 12 to restart, then restarts itself (block 290).

FIG. 9 is a flowchart 300 illustrating a sequence of operations for acontroller 12 (e.g., a first controller 12 or a downstream controller12) to detect characteristics of the portion of the conveyor system 10to which it is configured or attached. In particular, the controller 12initially detects any sensors 22 connected to its sensor interfaces 48a, 48 b, including whether any sensors 22 are connected thereto, as wellas whether connected sensors 22 are light-activated sensors (whichprovide a logic high when light from one end of the sensor is detected,e.g., an article is not blocking the photo-eye) or whether the sensors22 are dark-activated, or PNP-type, sensors (which provide a logic highwhen light from one end of the sensors is not detected, e.g., an articleis blocking the photo-eye), then stores that indication (block 302). Insome embodiments, such as with a sensor 22 that includes its ownprocessing capabilities, the controller 12 may be further configured toquery the sensor 22 for information, including the serial number of thesensor 22, whether the sensor is an light or dark activated type sensor22, and/or additional information about the sensor. The controller 12 isfurther configured to detect any motors of the motorized rollers 18connected to the motor interfaces 46 a, 46 b, including any data relatedthereto, and store that data (block 304). In some embodiments, thecontroller 12 merely detects the presence of a motor connected to themotor interfaces 46 a, 46 b and, when a motor is detected, retrievesdefault information and uses that to configure the controllers 12interaction with that motor. In specific embodiments, the defaultinformation includes an indication that the motor is a pulse roller,that the speed to operate the motor is a percentage of its maximum powerrating (e.g., about 80%), the brake method to stop the motor, theacceleration rate to accelerate the motor (if any), the decelerationrate at which to decelerate the motor (if any), the mode in which toconvey articles (e.g., zone singulation mode, flex zone mode, trainmode, or gap train mode), the amount of time to wait before declaring ajam, and/or the amount of time to wait to run the motor after a sensorhas been cleared, among others.

In any event, the controller 12 is further configured to detect anyhardware connected to the hardware interfaces 49 a, 49 b, including anydata related thereto, and store that data (block 306). The controller 12further sets up network connections and communications with at least oneadditional controller 12 and/or computing systems 90 (e.g., as describedabove) (block 308) and configures the zones it controls as well asparameters thereof (block 310).

As an article is moved from a first zone managed by a first controller12 to a second zone managed by a second controller 12, the dataassociated with that article is also transmitted from the firstcontroller 12 to the second controller 12. This data can include anidentification of the article, its weight, its length, and/or the stateof the downward direction. With respect to the “state” data, this datais used to indicate whether direction of product flow of a conveyorassembly 24 is in the typically default direction (i.e., from the “left”of the controller 12 to the “right” of the controller 12, as describedabove) or whether the direction of product flow is reversed (i.e., fromthe “right” of the controller 12 to the “left” of the controller 12, asdescribed above). FIG. 10 is a flowchart 320 illustrating a sequence ofoperations for a controller 12 to detect state data and adjust itsdownstream direction consistent with embodiments of the invention. Inparticular, the controller 12 receives a downstream communication (e.g.,a communication on its second network interface 44 b from a downstreamcontroller 12 and/or computing system 90) (block 322) or receives anupstream communication (e.g., a communication on its first networkinterface 44 a from an upstream controller 12 and/or computing system90) (block 324). When the controller 12 receives a downstreamcommunication, it determines whether the downstream communicationincludes data indicating the product flow for the article (e.g., whetherthe product flow is “normal” or “reversed”) (block 326). When thecommunication does not indicate the product flow for the article (“No”branch of decision block 326), the controller 12 determines that themessage is not data associated with an article and instead may be dataintended for another controller 12 (such as the initial controller 12 ina linear conveyor and/or the computing system 90). As such, thecontroller 12 processes the communication as different from acommunication containing article data (block 328).

Returning to block 326, when the communication does indicate the productflow for the article (“Yes” branch of decision block 326), thecontroller 12 determines whether the current direction it istransporting articles is reversed (e.g., whether previous articles havebeen sent in the reverse direction) (block 330). When the currentdirection is not reversed (“No” branch of decision block 330), thecontroller 12 changes its current direction of travel (e.g., such as byreversing the motors of the motorized rollers 18 it controls) (block332) and accepts the article from the downstream controller 12 if it isable to do so (e.g., has a clear zone) (block 334). When the currentdirection is reversed (“Yes” branch of decision block 330), thecontroller accepts the article from the downstream controller 12 if itis able to do so (block 334).

Returning to block 324, when the controller 12 receives an upstreamcommunication it determines whether the upstream communication includesdata indicating the product flow for the article (block 336). When thecommunication does not indicate the product flow for the article (“No”branch of decision block 336), the controller 12 determines that themessage is not data associated with an article and instead may be dataintended for another controller 12 (such as the initial controller 12 ina linear conveyor and/or the computing system 90). As such, thecontroller 12 processes the communication as different from acommunication containing article data (block 328).

Returning to block 336, when the communication does indicate the productflow for the article (“Yes” branch of decision block 336), thecontroller 12 determines whether the current direction it istransporting articles is normal (e.g., whether previous articles havebeen sent in the normal direction) (block 338). When the currentdirection is not normal (“No” branch of decision block 338), thecontroller 12 changes its current direction of travel (e.g., such as byreversing the motors of the motorized rollers 18 it controls) (block332) and accepts the article from the upstream controller 12 if it isable to do so (e.g., has a clear zone) (block 334). When the currentdirection is normal (“Yes” branch of decision block 338), the controlleraccepts the article from the upstream controller 12 if it is able to doso (block 334).

When transporting an article, a controller 12 may be configured to sensethe current utilized by the motor of a motorized roller 18 to detect thepresence of an article being transported thereby. Advantageously, thisallows a controller 12 to achieve maximum article density on a conveyorsurface without constant pressure or force being applied to articlesonce densely accumulated, and further offers the advantage ofsensor-less detection of articles. In particular, the controller 12monitors current to motors and filters current fluctuations and spikesin order to determine when an article is being transported by amotorized roller 18. Such operation allows controllers 12 to accumulatearticles and prime upstream zones to accumulate articles consistent withembodiments of the invention.

In one embodiment, the controller 12 is configured to accumulate anarticle by determining whether there the current to the motorized roller18 is at a first, “low current” level, or whether the current to themotorized roller 18 is at a second, “high current” level above that lowcurrent level. The low current level corresponds to a current level atwhich a motorized roller 18 is operated to transport an article withoutimpingement. The high current level corresponds to a current level atwhich a motorized roller 18 is operated to attempt to move an articlethat is jammed or otherwise impinged by another article. FIG. 11 is aflowchart 340 illustrating a sequence of operations for a controller 12to detect and accumulate an article being transported by a motorizedroller 18 by determining the current to the motorized roller 18consistent with embodiments of the invention. The controller 12initially determines whether it has a selected zone that is ready toaccept an article from an upstream zone, as well as whether the upstreamzone is transporting an article to the selected zone (block 342). Whenthe selected zone cannot accept an article, or when the upstream zone isnot transporting an article to the selected zone (“No” branch ofdecision block 342), the sequence of operations returns to block 342.

However, when a selected zone can accept an article and the upstreamzone is transporting an article to the selected zone (“Yes” branch ofdecision block 342), the controller 12 starts the motorized roller 18associated with that selected zone (block 344) as well as an “energysaver” timer (e.g., a timer after which the motorized roller 18 isstopped to save energy, and which may have a default of five seconds)(block 346), then determines whether the energy saver timer has expired(block 348). When the energy saver timer has expired (“Yes” branch ofdecision block 348), the motorized roller for the selected zone isstopped (block 350) and the sequence of operations returns to block 342.However, when the energy saver timer has not expired (“No” branch ofdecision block 348), the controller 12 detects the current used by themotorized roller and determines whether the low current level has beenreached (block 352). When the low current level has not been reached(“No” branch of decision block 352), the controller 12 determineswhether the high current level has been reached (block 354). When thehigh current level has not been reached (“No” branch of decision block354), the sequence of operations returns back to block 348).

Returning to block 352, when the low current level has been reached, thecontroller 12 may determine that the motorized roller 18 is transportingan article. Thus, when the low current level has been reached (“Yes”branch of decision block 352), the controller 12 starts a “stop” timer(e.g., a timer used to accumulate an article in the selected zone, andwhich may have a default of about two seconds) (block 356) anddetermines whether the stop timer has expired (block 358). When the stoptimer has not expired (“No” branch of decision block 358), thecontroller 12 determines whether the high current level has been reached(block 360). However, when the stop timer has expired (“Yes” branch ofdecision block 358) or when the high current level has been reached(“Yes” branch of decision block 360), the controller 12 indicates thatthe selected zone is not free, stops the motorized roller 18 for thezone, and kills the stop timer (block 362). Returning to block 360, whenthe high current level has not been reached (“No” branch of decisionblock 360), the sequence of operations may return to block 358.

After block 362, the controller determines whether the article isreleasable from the selected zone (block 364). When the article cannotbe released from the selected zone (e.g., because a downstream zonecannot accept the article) (“No” branch of decision block 364), thesequence of operations may return to block 364. However, when thearticle can be released from the selected zone (e.g., because adownstream zone can accept the article) (“Yes” branch of decision block364), the controller may release the article (e.g., activate themotorized roller 18 to release the article to a downstream zone) (block366) and, after releasing the article, the sequence of operations mayreturn to block 342. In this manner, the controller 12 can determinewhen an article is received at a zone (e.g., when the low current levelis reached but the high current level is not reached) as well as when anarticle is impinged or jammed (e.g., when the high current level isreached). Advantageously, by using motor timeouts, the controller 12also reduces pressure on the motorized roller 18, articles, and othercomponents of the conveyor system 10, which may prevent damage thereto.Moreover, the controller 12 prevents constant running of the motorizedroller 18, which can save energy and resulting in a conveying systemthat may be utilized in an “on-demand” fashion.

In addition to article detection, the controller 12 may be configured todetect the current to a motorized roller 18 and determine the weightand/or length of the article based, at least in part, thereon. Forexample, the controller 12 may be configured to determine the level ofcurrent requires to move the article with a motorized roller 18 thencross-reference the current required to move the article with a tablethat indicates the weight of the article. Also for example, when thecontroller 12 senses that an article is being transported by a motorizedroller 18, it may count the rotations of the motorized roller 18required to transport the article across the motorized roller 18 (e.g.,the amount of time that the low level current is provided to themotorized roller 18). When the circumference of the motorized roller 18is known, the controller 12 may multiply the number of rotationsrequired to move the article by the circumference of the motorizedroller 18 to determine a length of the article. Alternatively, thecontroller 12 may determine the length of the article by determining theamount of time it takes to transport the article across a motorizedroller 18 (e.g., the amount of time that the low level current isprovided to the motorized roller 18) then multiply that time by thespeed of the motorized roller 18. However, this alternativedetermination of length is not advantageous in situations where thespeed of the motorized roller 18 is variable or situations where thearticle is stopped while on the motorized roller. In any event, when thelength of an article is known, a controller 12 may be further configuredto determine where the article is within a given zone based on thenumber of rotations that have been used to transport the article throughthe zone. Article weight and/or length information may be passed in acommunication to a downstream controller 12.

In one embodiment, the controller 12 is configured to maintain themotorized roller 18 at a particular rotational position using aservo-lock stop. FIG. 12 is a flowchart 370 illustrating a sequence ofoperations for the controller 12 to use a servo-lock stop consistentwith embodiments of the invention. In particular, the controller 12determines whether to stop the motor of a motorized roller 18 (block372). When the controller 12 determines that the motor should not bestopped (“No” branch of decision block 372), the sequence of operationsreturns to block 372. However, when the controller 12 determines thatthe motor should be stopped (“Yes” branch of decision block 372), thecontroller 12 stops the motor (e.g., by shunting to the windings of themotor to ground or engaging a brake of the motorized roller 18, to namea few methods), determines the rotational position of the motor of themotorized roller 18 when it is stopped, and stores that data (block374). The controller 12 then determines whether the motor is at thedetermined rotational position (block 376).

When the motor is not at its determined rotational position (“No” branchof decision block 376), the controller 12 determines whether it has beenconfigured to adjust the rotational position of the motor by energizingtwo windings or by energizing just one winding (block 378). When thecontroller 12 is configured to adjust the rotational position of themotor by energizing one winding (“No” branch of decision block 378), thecontroller 12 energizes one winding of the motor to maintain the motorat the determined rotational position (block 380). However, when thecontroller 12 is configured to adjust the rotational position of themotor by energizing two windings (“Yes” branch of decision block 378),the controller 12 energizes two windings of the motor to maintain themotor at the determined rotational position (block 382).

In response to maintaining the motor at a determined rotational position(block 380 or 382), the controller 12 determines whether to release thearticle (e.g., whether to energize the motorized roller 18 to convey thearticle to a different zone) (block 384). When the controller 12determines that it should not release the article (“No” branch ofdecision block 384), the sequence of operations returns to block 376.However, when the controller 12 determines that it should release thearticle (“Yes” branch of decision block 384) it releases the article(block 386) and the sequence of operations returns to block 372.Returning to block 376, when the controller determines that the motor isat the determined rotational position (“Yes” branch of decision block376), the sequence of operations proceeds to block 384 and advances asdescribed above.

In a conveyor system 10, one or more controllers 12 may be replaced asthey experience errors, failure, or other wear. As such, a replacementcontroller 12 may execute an automatic replacement procedure byaccessing stored configuration data of the previous controller 12 thatthe replacement controller 12 replaced from one or more neighboringcontrollers 12. FIG. 13 is a flowchart 400 illustrating a sequence ofoperations for an automatic replacement procedure that may be executedby a controller 12 consistent with embodiments of the invention.Initially, the controller 12 detects whether there is a trigger for anautomatic replacement procedure (block 402). Specifically, the triggerto initiate an automatic replacement procedure may be a user pressingand holding a softkey of a user interface 54 before the controller 12 isturned on, then maintaining depression of the softkey of the userinterface 54 as the controller 12 is turned on. In any event, when thereis no trigger for an automatic replacement procedure (“No” branch ofdecision block 402), the controller 12 starts up and sends its firmwareand configuration data to upstream and/or downstream controllers 12, ifso configured (block 404), the sequence of operations may end. Acontroller 12 automatically stores firmware and configuration data inresponse to the receipt thereof, and, in specific embodiments, stores anotation of the IP address of the controller 12 from which the firmwareand configuration data are sent. Thus, and as discussed in more detailbelow, the controller 12 can send the firmware and configuration data tothe appropriate controller 12 based on the IP address of the controllerthat requested that firmware and configuration data.

However, when there is a trigger for an automatic replacement procedure(“Yes” branch of decision block 402), the controller 12 (which, withrespect to the sequence of operations of FIGS. 13 and 14, is referred tohereinafter as the “replacement” controller 12) initiates a procedure torecover the network addresses of the controller 12 (which, with respectto the sequence of operations of FIGS. 13 and 14, is referred tohereinafter as the “previous” controller 12) that the replacementcontroller 12 is intended to replace (block 406). After recovering thenetwork addresses (block 406), the replacement controller 12 requeststhe firmware and configuration data of the previous controller 12 thatis stored on a neighboring controller 12 (block 408). Specifically, inblock 408, the replacement controller 12 initially determines whetherany neighboring controllers 12 are present (e.g., similarly to at leastpart of the sequence of operations of FIG. 5) and, if there is aneighboring controller 12 connected to the replacement controller's 12first network interface 44 a, the replacement controller 12 sends arequest for the firmware and configuration data to that neighboringcontroller 12 through the first network interface 44 a. However, andalso in block 408, if there is not a neighboring controller 12 connectedto the replacement controller's 12 first network interface 44 a, thereplacement controller 12 sends a request for the firmware andconfiguration data to the neighboring controller 12 connected to thesecond network interface 44 b.

After requesting the firmware and configuration data from a neighboringcontroller 12 (block 408), the replacement controller 12 determineswhether it has received the firmware and configuration data (block 410).When the firmware and configuration data have not been received (“No”branch of decision block 410), the replacement controller 12 indicatesan error and aborts the automatic replacement procedure (block 412).However, when the firmware and configuration data have been received(“Yes” branch of decision block 410), the replacement controllerinstalls the firmware and configuration data (block 414) and restartsitself (block 416).

As discussed above, the replacement controller 12 may recover thenetwork addresses of the previous controller 12 in block 406 of FIG. 13.In general, even if not automatically configured in an automaticconfiguration procedure, the controllers 12 of a conveyor system 10 areprogrammed to have consecutive IP addresses that increase by apredetermined amount (e.g., one) along the downstream direction 26. Assuch, a replacement controller 12 may recover its IP address (as well asother network addresses) by determining the network addresses ofadditional controllers 12 of the conveyor system 10 and comparing thosenetwork addresses to potential network addresses.

FIG. 14 is a flowchart 420 illustrating a sequence of operations for areplacement controller 12 to recover the network address of the previouscontroller 12, and particular a sequence of operations to perform atblock 406 in FIG. 13, consistent with embodiments of the invention. Inparticular, the replacement controller 12 sends one or more queriesthrough its network interfaces 44 a, 44 b to neighboring controllers 12for network information, including their IP addresses, the subnet mask,the gateway, and data indicating whether a neighboring controller 12 isthe beginning or ending controller 12 within a particular subnet (block422). Specifically, the replacement controller 12 sends one querythrough each network interface 44 a, 44 b. The replacement controller 12then determines whether any responses were received (block 424). When atleast one response is not received (“No” branch of decision block 424),the replacement controller 12 indicates and error and aborts theautomatic replacement procedure (block 426).

When at least one response is received (“Yes” branch of decision block424), the replacement controller 12 analyzes the data therein togenerate a list of possible IP addresses to use, determines the subnetmask, determines the gateway, and, optionally, attempts to determine itslocation along the conveyor system 10 (block 428). In one example, whenconnected to two neighboring controllers 12, the replacement controller12 may generate the list of possible IP addresses such that it has oneentry set to the IP address between those of the neighboring controllers12. Also for example, when connected to one neighboring controller 12,the replacement controller 12 may generate the list of possible IPaddresses such that it has one entry set to the IP address above theneighboring controller 12 and one IP address below the neighboringcontroller 12.

After the replacement controller 12 has generated the list of possibleIP addresses, it sends a query to discover one or more controllers 12 ofthe conveyor system 10 (block 430) and, as it receives responses fromthe one or more controllers 12 (e.g., including any neighboringcontrollers 12), it deletes the IP addresses from the list of possibleIP addresses when messages from the one or more controllers 12 have acorresponding IP address that matches (block 432). In a specificexample, when the replacement controller 12 is the initial controller 12of a conveyor system 10 and connected to one neighboring controller 12,a downstream controller 12 will be configured with the IP address abovethat of the neighboring controller 12 such that the corresponding entryis removed from the list of possible IP addresses, leaving only the IPaddress below that of the neighboring controller 12. Correspondingly,when the replacement controller 12 is the last controller 12 of aconveyor system 10 and connected to one neighboring controller 12, adownstream controller 12 will be configured with the IP address belowthat of the neighboring controller such that the corresponding entry isremoved from the list of possible IP addresses, leaving only the IPaddress above that of the neighboring controller 12.

In any event, and in response to filtering out already used IP addresses(block 432), the replacement controller 12 determines whether there isonly one entry in the list of possible IP addresses (block 434). Morethan one entry in the list of possible IP addresses may indicate thatthere is more another missing controller 12, which could result in thereplacement controller 12 picking an unused IP address. This, in turn,may cause communication confusion between the controllers 12 of theconveyor system 10 in which one or more of those controllers attempt tosend a message to the replacement controller 12 at an IP address thatthe replacement controller 12 is not using. Thus, when there is morethan one entry in the list of possible IP addresses (“No” branch ofdecision block 434), the replacement controller indicates an error andaborts the automatic replacement procedure (block 436). However, whenthere is one entry in the list of possible IP addresses (“Yes” branch ofdecision block 434), the replacement controller sets its IP address tothe IP address of that entry (block 438) and completes network addressrecovery by setting its subnet mask to that of neighboring controllers12, setting its gateway to that of neighboring controllers 12, anddeleting the list of possible IP addresses, among other tasks (block440).

Controllers 12 may be configured to convey articles across the conveyorsystem 10 in a number of ways, including, as discussed above, a zonesingulation mode, a flex zone mode, a train mode, a gap train mode, atouch-and-go mode, and a look-ahead-slow-down mode. More specifically,the touch-and-go mode allows a user to selectively activate a conveyorsystem 10, which may be advantageous in facilities where leavingconveyor systems 10 constantly running (e.g., leaving motorized rollers18 constantly turning) is inefficient, unwanted, or unnecessary. Assuch, a controller 12 may detect the rotation of a previously staticmotorized roller 18 then start at least one motorized roller 18 of atleast one downstream controller 12 in response thereto. FIG. 15 is aflowchart 450 illustrating a sequence of operations for a controller 12in a touch-and-go mode to implement functionality corresponding to thatdescribed above consistent with embodiments of the invention. Inparticular, the controller 12 initially determines whether a zone it iscontrolling is free and whether there is an article being transportedupstream (block 452). When the zone is not free or when an article isbeing transported upstream (“No” branch of decision block 452), thecontroller 12 continues its current operation (e.g., running motorizedrollers 18 and waiting to accept the upstream article, keeping motorizedrollers 18 static and waiting to unload an article, or running motorizedrollers 18 to unload an article) (“Yes” branch of decision block 452),the controller resets a rotation counter (block 454) and determineswhether there is more than one rotation (e.g., such as one-and-a-halfrotations or two rotations) in the proper direction (e.g., in thedownstream direction 26) that lasts for less than two-hundredmilliseconds (block 456).

When there is not more than one rotation in the proper direction thatlasts for less than two-hundred milliseconds (“No” branch of decisionblock 456), the sequence of operations proceeds back to block 452.However, when there is more than one rotation in the proper directionthat lasts for less than two-hundred milliseconds (“Yes” branch ofdecision block 456), the controller 12 determines whether thetouch-and-go mode is enabled (block 458). When the touch-and-go mode isnot enabled (“No” branch of decision block 458), the sequence ofoperations proceeds back to block 452. However, when the touch-and-gomode is enabled (“Yes” branch of decision block 458), the controller 12proceeds to block 344 of FIG. 11 (block 460).

When transporting an article, controllers 12 may also be configured toconstantly look ahead to the next downstream zone and dynamically adjustthe motors of the motorized rollers to a user configurable speed toallow the article to come to a controlled stop. FIG. 16 is a flowchart470 illustrating a sequence of operations for a controller 12 in alook-ahead-slow-down mode to implement functionality corresponding tothat described above consistent with embodiments of the invention. Inparticular, the controller 12 determines whether it has received anincoming article communication for a selected zone controlled thereby(e.g., a message indicating that an article is being transported to azone controlled by the controller 12) (block 472). When the controllerhas not received an incoming article communication (“No” branch ofdecision block 472), the sequence of operations returns to block 472.However, when the controller receives an incoming article communication(“Yes” branch of decision block 472), it determines whether thelook-ahead-slow-down mode is enabled (block 474).

When the look-ahead-slow-down mode is not enabled (“No” branch ofdecision block 474), the controller 12 operates the motorized roller 18for the selected zone at its normal speeds (e.g., the normal startingand stopping speed) (block 476). However, when the look-ahead-slow-downmode is enabled (“Yes” branch of decision block 474), the controller 12determines whether the controller 12 is accumulating articles at theselected zone (block 478). For example, the controller 12 for theselected zone may adjust the speed of a motorized roller 18 for thatselected zone to a target speed that is lower than the normal speed forthe motorized roller 18 when it is accumulating an article.Advantageously, this slows the article. As such, when the controller 12is not accumulating articles in the selected zone (“No” branch ofdecision block 478), the controller 12 operates the motorized roller 18for the selected zone at its normal speeds (block 476). When thecontroller 12 is accumulating articles at the selected zone (“Yes”branch of decision block 478), the controller 12 operates the motorizedroller at a target speed (block 480), which may be from about 20% toabout 80% of the normal speed, and in specific embodiments is predefinedby the user. In any event, the controller 12 sends a communication to atleast one upstream controller 12 that the motorized roller 18 is beingoperated at the target speed (referred to hereinafter as a “target speedcommunication”) and accepts the article, then sends an incoming articlecommunication to controller 12 controlling the next downstream zone (or,when the controller 12 controlling the next downstream zone is thecontroller 12 controlling the selected zone, merely stores such anindication) (block 482).

FIG. 17 is a flowchart 490 illustrating a sequence of operations for acontroller 12 to receive a communication that at least one downstreamzone includes a motorized roller 18 being operated at the target speedconsistent with embodiments of the invention. In particular, theupstream controller 12 determines whether it has received acommunication associated with a downstream zone that indicates that themotorized roller 18 of the downstream zone is being operated at thetarget speed (block 492). When the controller 12 receives such acommunication (“Yes” branch of decision block 492), the controller 12operates the motorized roller 18 of the zone at the target speed (block494). Alternatively, when the controller has not received acommunication indicating that the motorized roller of a downstream zoneis being operated at the target speed (“No” branch of decision block492), the controller operates the motorized roller 18 of the zone at itsnormal speeds.

An article may become jammed as it is conveyed along a conveyor system10. The controllers 12, however, may automatically initiate a jamclearing procedure to resolve such jams. FIG. 18 is a flowchart 500illustrating a sequence of operations for a controller 12 to initiatesuch a jam clearing procedure consistent with embodiments of theinvention. The controller 12 initially determines whether a sensor 22associated with a selected zone detects an article (bock 502). When thesensor 22 does not detect an article (“No” branch of decision block502), the sequence of operations returns to block 502. However, when thesensor 22 detects that an article is present (“Yes” branch of decisionblock 502), the controller 12 resets and starts a jam timer (e.g.,resetting the jam timer to about five seconds) (block 504) and againdetermines whether the sensor 22 detects an article (block 506). When,at block 506, the controller determines that the article is stillpresent (“Yes” branch of decision block 506), the controller 12determines whether the jam timer has elapsed (block 508).

When the jam timer has not elapsed (“No” branch of decision block 508),the sequence of operations returns to block 506. However, when the jamtimer has elapsed (“Yes” branch of decision block 508), the controller510 automatically initiates a jam clearing procedure (block 510). Whenthe jam clearing procedure has finished, the controller 12 thendetermines whether the jam has been cleared (e.g., whether the articleis no longer detected) (block 512). When the jam has not been cleared bythe jam clearing procedure (“No” branch of decision block 512), thecontroller 12 stops and resets the jam timer, stops the motorizedrollers 18 associated with the zone in which that jam has occurred,sends a communication to at least one upstream controller 12 (if any)that indicates that a jam has occurred, and prevents further operationuntil the jam has been manually cleared (block 514). The sequence ofoperations proceeds from block 514 back to block 512. Returning to block506, when an article is not still present (“No” branch of decision block506), or, with respect to block 512, when a jam has been cleared by thejam clearing procedure (“Yes” branch of decision block 512), thecontroller 12 stops and resets the jam timer, then continues operatingin a normal fashion (block 516).

FIG. 19 is a flowchart 520 illustrating a jam clearing procedure thatmay be performed at block 510 in flowchart 500 of FIG. 18 by acontroller 12 consistent with embodiments of the invention. Returning toFIG. 19, the controller 12 operates the motorized roller 18 associatedwith the zone that may have a jam in reverse, resets and starts a jamclearance timer (e.g., resetting the jam clearance timer to about fiveseconds), resets the jam timer, and resets a jam counter (e.g.,resetting the jam counter to zero) (block 522) and determining whetherthe jam clearance timer has expired (block 524). When the jam clearancetimer has not elapsed (“No” branch of decision block 524), thecontroller 12 determines whether the sensor 22 associated with theselected zone detects an article (block 526). When the sensor 22 detectsthe article (“Yes” branch of decision block 526), the sequence ofoperations returns to block 524. However, when the sensor 22 does notdetect the article (“No” branch of decision block 526), the controller12 operates the motorized roller 18 associated with the jam in thenormal direction until the sensor 22 detects the article, then resumesnormal operation and attempts to convey the article downstream (block528). Returning to block 524, when the jam clearance timer has expired(“Yes” branch of decision block 524), the controller 12 operates themotorized roller 18 associated with the jam in the normal direction andattempts to convey the article downstream (block 530).

In response to the actions at block 528 or block 530, the controllerstarts the jam timer (block 532) and again determines whether the sensor22 detects the article (block 534). When the sensor 22 does not detectthe article (“No” branch of decision block 534), the controllerdetermines that the jam has been cleared, and stops and resets the jamtimer and the jam clearance timer (block 536). When the sensor 22detects the article (“Yes” branch of decision block 534), the controller12 determines whether the jam timer has elapsed (block 538). When thejam timer has not elapsed (“No” branch of decision block 538), thesequence of operations returns to block 534. When the jam timer haselapsed (“Yes” branch of decision block 534), the controller 12increments the jam counter (e.g., such as by one), and stops and resetsthe jam timer and the jam clearance timer (block 540). The controller 12then determines whether the jam counter has reached a target value(e.g., about three) (block 542). When the jam counter has not reached atarget value (“No” branch of decision block 542), the controllerrestarts the jam clearance timer (block 544) and the sequence ofoperations returns to block 524. However, when the jam counter hasreached the target value (“Yes” branch of decision block 542), thecontroller determines that the jam has not been cleared (block 546). Inresponse to the actions at block 536 or block 546, the controller mayproceed to block 512 of the flowchart 500 of FIG. 18.

At times, a particular motorized roller 18 may be experience atangential mechanical force such that the maximum rotational speedtherefor is exceeded. The motor in the motorized roller 18 thusgenerates excess electrical energy that is fed back to a correspondingcontroller 12. The controller 12, in turn, may absorb the energy anddissipate it as heat within the motor interface(s) 46 a, 46 b thereof.This prevents high voltage from being provided to other, more sensitivecircuitry of the controller 12. Alternatively, the controller 12 mayactively divert the excess electrical energy to the power supply unit 24connected thereto, thus reducing the overall load thereon.

However, neither method of dealing with excess electrical energy in turnalleviates the problem of the maximum rotational speed of a motorizedroller 18 being exceeded. Thus, in some embodiments, the controller 12is configured to slow down the motor of a motorized roller 18 byproviding an opposing current to the windings of the motor to, in turn,induce an opposing motor torque to reduce the speed of the motorizedroller 18. FIG. 20 is a flowchart 550 illustrating a sequence ofoperations for a controller 12 to reduce the rotational speed of amotorized roller 18 consistent with embodiments of the invention. Inparticular, the controller 12 determines whether the target rotationalspeed of a motorized roller 18 has been exceeded (block 552). When thetarget rotational speed of the motorized roller 18 has not been exceeded(“No” branch of decision block 552), the sequence of operations returnsto block 552. However, when the target rotational speed of the motorizedroller 18 has been exceeded (“Yes” branch of decision block 552), thecontroller 12 determines the speed and looks up the speed in a table todetermine a reverse current to apply to the motorized roller 18 to slowthe motorized roller 18 (block 554) and applies that determined reversecurrent to the motorized roller 18 to slow that motorized roller 18(block 556). The sequence of operations may then return to block 552.

In general, brushless DC motors that may be used in motorized rollers 18consistent with embodiments of the invention may generate power whenthey are rotated from an external force, such as a when a conveyorsurface they control is angled downwardly and an article rolls themotorized roller 18 as it traverses that surface. Some embodiments ofthe invention apply a current to the motorized roller 18 to prevent itfrom turning, as discussed above. However, alternative embodiments ofthe invention may supply the power generated by the motorized roller tothe power supply unit 24. This, in turn, may reduce the overall powerconsumption of the conveyor system 10.

In some embodiments, and as discussed above, a motorized roller 18 mayinclude an addressable circuit 110 having information stored thereon.The controller 12, in turn, may be configured to retrieve thatinformation, determine an operational characteristic of the motorizedroller 18, and/or control the motorized roller 18 based upon thatoperational characteristic. FIG. 21 is a flowchart 560 illustrating asequence of operations for a controller 12 to determine an operationalcharacteristic of a motorized roller 18 and, optionally, control thatmotorized roller 18 based upon that operational characteristicconsistent with embodiments of the invention. In particular, thecontroller 12 may be configured to communicate with an addressablecircuit 110 of the motorized roller 18 and query the addressable circuit110 for information associated with the motorized roller 18 (block 562).When data is received from the addressable circuit 110 (“Yes” branch ofdecision block 564), the controller 12 determines at least oneoperational characteristic of the motorized roller 18, such as thenumber of windings of the motor of the motorized roller 18, thecircumference of the housing of the motorized roller 18, the radius ofthe motorized roller 18, the gear ratio for the gear box of themotorized roller 18, the power rating of the motor of the motorizedroller 18, the serial number for the motorized roller 18, the model ofthe motorized roller 18, and/or other motorized roller 18 information(block 566). The controller 12 may then determine information about theoperation of the motorized roller 18 and/or control the motorized roller18 appropriately.

In an optional block, the controller 12 determines the rotationaldistance of the motorized roller 18 in response to a momentary pulse ofvoltage (block 568). For example, the rotation of a motor of themotorized roller 18 in response to a momentary pulse of voltage istypically from one winding to the next. When the motor includes threewindings, the motor operates to rotate by one-third. This, in turn, istranslated by the gearbox into a percentage of rotation of the housingof the motorized roller 18. Continuing the example, if the gearbox ratioof a gearbox of the motorized roller 18 is 60-1, then sixty rotations ofthe motor translate into one rotation of the motorized roller 18. Assuch, one-third rotation of the motor translates to 1/180^(th) rotationof the housing of the motorized roller. Thus, if the housing of themotorized roller 18 has a circumference of twelve inches, the controller12 with the data above, some of which may be received from theaddressable circuit of the motorized roller 18, may calculate that therotational distance of the housing of the motorized roller 18 inresponse to a momentary pulse of voltage to the motor of the motorizedroller 18 is approximately 2/30^(th) of an inch in block 566.

In another optional block, the controller 12 determines the currentthreshold of the motor of the motorized roller 18 based informationassociated with the motorized roller 18 (block 570). For example, themotorized roller 18 may be rated for a particular current level.Exceeding that current level may result in damage to a component of themotorized roller. Continuing with the example, the controller 12 mayreceive information associated with the motorized roller 18 thatindicates the power rating of the motor of the motorized roller 18(e.g., how many watts the motor is rated for) or the model of themotorized roller 18. As such, the controller 12 may access theconfiguration data structure 62 or parameters data structure 64, andparticularly a lookup table thereof, to determine, for the power ratingor model, the current limit for the motor of the motorized roller 18 inblock 570.

When data is not received from a motorized roller 18 (“No” branch ofdecision block 564), or in response to completing operations in blocks568 or 570, the sequence of operations may end.

While the present invention has been illustrated by a description of thevarious embodiments and the examples, and while these embodiments havebeen described in considerable detail, it is not the intention of theapplicants to restrict or in any way limit the scope of the appendedclaims to such detail. Additional advantages and modifications willreadily appear to those skilled in the art. Thus, the invention in itsbroader aspects is therefore not limited to the specific details,representative apparatus and method, and illustrative example shown anddescribed. In particular, one having ordinary skill in the art willappreciate that any of the blocks in the above flowcharts may bereorganized, deleted, or made concurrent with any other block of theabove flowcharts. Accordingly, departures may be made from such detailswithout departing from the spirit or scope of applicants' generalinventive concept. Thus, the invention lies in the claims hereinafterappended.

1. A method of controlling at least a portion of a conveyor with a firstconveyor controller, the method comprising: detecting whether a secondconveyor controller is connected to the first conveyor controller; inresponse to detecting that there is a second conveyor controllerconnected to the first conveyor controller, identifying whether thesecond conveyor controller is connected to a predetermined networkinterface of the first conveyor controller; if a second conveyorcontroller is connected to the predetermined network interface,configuring the first conveyor controller to rotate a motorized rollerin a first predetermined direction; and if a second conveyor controlleris not connected to the predetermined network interface, configuring thefirst conveyor controller to rotate the motorized roller in a secondpredetermined direction.
 2. The method of claim 1, further comprising:in response to detecting that there is not a third conveyor controllerconnected to the first conveyor controller, determining that the firstconveyor controller is an initial conveyor controller of a linearconveyor.
 3. The method of claim 1, wherein the first conveyorcontroller detects whether there is a second conveyor controllerconnected thereto in response to user interaction to initiate anautomatic configuration procedure.
 4. The method of claim 1, wherein thefirst conveyor controller detects whether there is a second conveyorcontroller connected thereto in response to receiving a command toinitiate an automatic configuration procedure.
 5. The method of claim 1,further comprising: if the second conveyor controller is connected tothe predetermined network interface, setting a flag to indicate thesecond conveyor controller is connected to the predetermined networkinterface.
 6. The method of claim 1, further comprising: if the secondconveyor controller is not connected to the predetermined networkinterface, clearing a flag to indicate that the second conveyorcontroller is connected to the predetermined network interface.
 7. Themethod of claim 1, wherein the first conveyor controller includes afirst and second network interfaces, and wherein the predeterminednetwork interface is one of the first and second network interfaces. 8.The method of claim 1, further comprising: transmitting a configurationmessage to the second conveyor controller that includes configurationdata associated with the first conveyor controller.
 9. The method ofclaim 8, further comprising: receiving a confirmation message from thesecond conveyor controller indicating that the configuration data wasreceived.
 10. The method of claim 9, wherein the confirmation message isa first confirmation message, the method further comprising: in responseto receiving a second confirmation message from a third conveyorcontroller, indicating that an error has occurred.
 11. The method ofclaim 9, wherein the confirmation message is a first confirmationmessage, the method further comprising: in response to receiving asecond confirmation message from a third conveyor controller,transmitting an error message to the second conveyor controllerindicating that an error has occurred.
 12. The method of claim 8,wherein the configuration data includes a network address for the firstconveyor controller.
 13. The method of claim 1, further comprising:receiving and storing configuration data associated with the secondconveyor controller.
 14. The method of claim 1, further comprising:detecting a photo-eye sensor connected to the conveyor controller,including whether the photo-eye sensor is light-operated ordark-operated; detecting the motorized roller connected to the conveyorcontroller, including information about the motorized roller; andautomatically configuring at least one of a speed to operate themotorized roller, a rate at which to accelerate the motorized roller, arate at which to decelerate the motorized roller, or combinationsthereof.
 15. The method of claim 14, wherein detecting the photo-eyesensor includes: querying the photo-eye sensor to determine whether itis light-operated or dark-operated.
 16. A conveyor controller,comprising: a plurality of network interfaces; at least one processingunit; a memory; and program code resident in the memory, the programcode configured to be executed by the at least one processing unit todetect whether a second conveyor controller is connected to the conveyorcontroller, identify whether the second conveyor controller is connectedto a predetermined network interface of the conveyor controller inresponse to detecting that the second conveyor controller is connectedto the conveyor controller, configure the conveyor controller to rotatea motorized roller in a predetermined direction if the second conveyorcontroller is connected to the predetermined network interface, andconfigure the conveyor controller to rotate the motorized rolleropposite the predetermined direction if the second conveyor controlleris not connected to the predetermined network interface.
 17. Theconveyor controller of claim 16, wherein the program code is furtherconfigured to determine that the conveyor controller is an initialconveyor controller of a linear conveyor in response to detecting thatthere is not a third conveyor controller connected to the conveyorcontroller.
 18. The conveyor controller of claim 16, further comprising:a user interface, wherein the program code detects whether the secondconveyor controller is connected to the conveyor controller in responseto user interaction at the user interface to initiate an automaticconfiguration procedure.
 19. The conveyor controller of claim 16,wherein the program code detects whether the second conveyor controlleris connected to the conveyor controller in response to receiving acommand to initiate an automatic configuration procedure.
 20. Theconveyor controller of claim 16, wherein the program code is furtherconfigured to set a flag to indicate the second conveyor controller isconnected to the predetermined network interface if the second conveyorcontroller is connected to the predetermined network interface.
 21. Theconveyor controller of claim 16, wherein the program code is furtherconfigured to clear a flag to indicate that the second conveyorcontroller is connected to the predetermined network interface if thesecond conveyor controller is not connected to the predetermined networkinterface.
 22. The conveyor controller of claim 16, wherein theplurality of network interfaces includes a first and second networkinterface, and wherein the predetermined network interface is one of thefirst and second network interfaces.
 23. The conveyor controller ofclaim 16, wherein the program code is further configured to transmit aconfiguration message to the second conveyor controller that includesconfiguration data associated with the conveyor controller.
 24. Theconveyor controller of claim 23, wherein the program code is furtherconfigured to receive a confirmation message from the second conveyorcontroller indicating that the configuration data was received.
 25. Theconveyor controller of claim 24, wherein the confirmation message is afirst confirmation message, and wherein the program code is furtherconfigured to indicate that an error has occurred in response toreceiving a second confirmation message from a third conveyorcontroller.
 26. The conveyor controller of claim 24, wherein theconfirmation message is a first confirmation message, and wherein theprogram code is further configured to transmit an error message to thesecond conveyor controller indicating that an error has occurred inresponse to receiving a second confirmation message from a thirdconveyor controller.
 27. The conveyor controller of claim 23, whereinthe configuration data includes a network address for the conveyorcontroller.
 28. The conveyor controller of claim 16, wherein the programcode is further configured to receive and store configuration dataassociated with the second conveyor controller.
 29. The conveyorcontroller of claim 16, wherein the program code is further configuredto detect a photo-eye sensor connected to the conveyor controller,including whether the photo-eye sensor is light-operated ordark-operated, detect the motorized roller connected to the conveyorcontroller, including information about the motorized roller, andautomatically configure at least one of a speed to operate the motorizedroller, a rate at which to accelerate the motorized roller, a rate atwhich to decelerate the motorized roller, or combinations thereof. 30.The conveyor controller of claim 16, wherein the program code is furtherconfigured to query the photo-eye sensor to determine whether it islight-operated or dark-operated.
 31. A program product, comprising:program code configured to be executed by at least one processing unitto detect whether a second conveyor controller is connected to theconveyor controller, identify whether the second conveyor controller isconnected to a predetermined network interface of the conveyorcontroller in response to detecting that the second conveyor controlleris connected to the conveyor controller, configure the conveyorcontroller to rotate a motorized roller in a predetermined direction ifthe second conveyor controller is connected to the predetermined networkinterface, and configure the conveyor controller to rotate the motorizedroller opposite the predetermined direction if the second conveyorcontroller is not connected to the predetermined network interface; anda non-transitory computer readable medium bearing the program code. 32.A method of controlling at least a portion of a conveyor, the methodcomprising: in response to receiving first configuration data from afirst conveyor controller at a second conveyor controller, detectingwhether a third conveyor controller is connected to the second conveyorcontroller; if a third conveyor controller is connected to the secondconveyor controller, transmitting a configuration message to the thirdconveyor controller that includes second configuration data associatedwith the second conveyor controller; and if a third conveyor controlleris not connected to the second conveyor controller, determining that thesecond conveyor controller is a final conveyor controller of a linearconveyor.
 33. The method of claim 32, further comprising: determining anetwork address for the second conveyor controller based on the firstconfiguration data.
 34. The method of claim 33, further comprising:determining a first network address for the first conveyor controllerfrom the first configuration data; incrementing the first networkaddress to generate a second network address; and assigning the secondnetwork address to the second conveyor controller.
 35. The method ofclaim 34, further comprising: including the second network address inthe second configuration data.
 36. The method of claim 32, furthercomprising: in response to receiving the first configuration data,transmitting a confirmation message to the first conveyor controllerindicating that the first configuration data was received.
 37. Themethod of claim 32, further comprising: receiving a confirmation messagefrom the third conveyor controller indicating that the secondconfiguration data was received.
 38. The method of claim 37, wherein theconfirmation message is a first confirmation message, the method furthercomprising: in response to receiving a second confirmation message froma fourth conveyor controller, indicating that an error has occurred. 39.The method of claim 37, wherein the confirmation message is a firstconfirmation message, the method further comprising: in response toreceiving a second confirmation message from a fourth conveyorcontroller, transmitting an error message to the first conveyorcontroller indicating that an error has occurred.
 40. The method ofclaim 32, further comprising: receiving and storing the firstconfiguration data; sending the second configuration data to the firstconveyor controller.
 41. The method of claim 32, further comprising: ifa third conveyor controller is connected to the second conveyorcontroller, receiving and storing third configuration data associatedwith the third conveyor controller.
 42. A conveyor controller,comprising: at least one processing unit; a memory; and program coderesident in the memory, the program code configured to be executed bythe at least one processing unit to, in response to receiving firstconfiguration data from a second conveyor controller at the conveyorcontroller, detect whether a third conveyor controller is connected tothe conveyor controller, transmit a configuration message to the thirdconveyor controller that includes second configuration data associatedwith the conveyor controller if the third conveyor controller isconnected to the conveyor controller, and determining that the conveyorcontroller is a final conveyor controller of a linear conveyor if thethird conveyor controller is not connected to the conveyor controller.43. The conveyor controller of claim 42, wherein the program code isfurther configured to determine a network address for the conveyorcontroller based on the first configuration data.
 44. The conveyorcontroller of claim 43, wherein the program code is further configuredto determine a first network address for the second conveyor controllerfrom the first configuration data, increment the first network addressto generate a second network address, and assign the second networkaddress to the conveyor controller.
 45. The conveyor controller of claim44, wherein the program code is further configured to include the secondnetwork address in the second configuration data.
 46. The conveyorcontroller of claim 42, wherein the program code is further configuredto transmit a confirmation message to the second conveyor controllerindicating that the first configuration data was received in response toreceiving the first configuration data.
 47. The conveyor controller ofclaim 42, wherein the program code is further configured to receive aconfirmation message from the third conveyor controller indicating thatthe second configuration data was received.
 48. The conveyor controllerof claim 47, wherein the confirmation message is a first confirmationmessage, and wherein the program code is further configured to indicatethat an error has occurred in response to receiving a secondconfirmation message from a fourth conveyor controller
 49. The conveyorcontroller of claim 47, wherein the confirmation message is a firstconfirmation message, and wherein the program code is further configuredto transmit an error message to the second conveyor controllerindicating that an error has occurred in response to receiving a secondconfirmation message from a fourth conveyor controller.
 50. The conveyorcontroller of claim 42, wherein the program code is further configuredto receive and store the first configuration data, and wherein theprogram code is further configured to send the second configuration datato the second conveyor controller.
 51. The conveyor controller of claim42, wherein the program code is further configured to receive and storethird configuration data associated with the third conveyor controllerif the third conveyor controller is connected to the conveyorcontroller.
 52. A program product, comprising: program code configuredto be executed by at least one processing unit to, in response toreceiving first configuration data from a second conveyor controller atthe conveyor controller, detect whether a third conveyor controller isconnected to the conveyor controller, transmit a configuration messageto the third conveyor controller that includes second configuration dataassociated with the conveyor controller if the third conveyor controlleris connected to the conveyor controller, and determining that theconveyor controller is a final conveyor controller of a linear conveyorif the third conveyor controller is not connected to the conveyorcontroller; and a non-transitory computer readable medium bearing theprogram code.
 53. A method of controlling at least a portion of aconveyor with a first conveyor controller, the method comprising:receiving and storing configuration data associated with a secondconveyor controller connected to the first conveyor controller; inresponse to a first request for data from a third conveyor controllerintended to replace the second conveyor controller, transmitting theconfiguration data to the third conveyor controller.
 54. The method ofclaim 53, further comprising: in response to a second request for datafrom the third conveyor controller, transmitting a network addressassociated with the first conveyor controller to the third conveyorcontroller.
 55. The method of claim 53, further comprising: in responseto a second request for a network address for each conveyor controllerconnected in a network with a fourth conveyor controller, transmitting anetwork address associated with the first conveyor controller to thefourth conveyor controller.
 56. A conveyor controller, comprising: atleast one processing unit; a memory; and program code resident in thememory, the program code configured to be executed by the at least oneprocessing unit to receive and store configuration data associated witha second conveyor controller connected to the conveyor controller,transmit the configuration data to a third conveyor controller intendedto replace the second conveyor controller in response to a first requestfor data from the third conveyor controller.
 57. The conveyor controllerof claim 56, wherein the program code is further configured to transmita network address associated with the conveyor controller to the thirdconveyor controller in response to a second request for data from thethird conveyor controller.
 58. The conveyor controller of claim 56,wherein the program code is further configured to transmit a networkaddress associated with the conveyor controller to the fourth conveyorcontroller in response to a second request for a network address foreach conveyor controller connected in a network with a fourth conveyorcontroller.
 59. A program product, comprising: program code configuredto be executed by at least one processing unit to receive and storeconfiguration data associated with a second conveyor controllerconnected to the conveyor controller, transmit the configuration data toa third conveyor controller intended to replace the second conveyorcontroller in response to a first request for data from the thirdconveyor controller; and a non-transitory computer readable mediumbearing the program code.
 60. A method of controlling at least a portionof a conveyor, the method comprising: in response to user input to afirst conveyor controller to automatically configure the first conveyorcontroller, requesting configuration data from a second conveyorcontroller connected to the first conveyor controller; and in responseto receiving the configuration data, storing the configuration data inthe first conveyor controller.
 61. The method of claim 60, wherein thefirst conveyor controller includes a first and second network interface,the second conveyor controller connected to the first network interfaceand a third conveyor controller connected to the second networkinterface.
 62. The method of claim 60, further comprising: in responseto the user input to the first conveyor controller to automaticallyconfigure the first conveyor controller, broadcasting a request for anetwork address for each conveyor controller connected in a network withthe first conveyor controller.
 63. The method of claim 62, furthercomprising: receiving a plurality of network addresses associated with aplurality of conveyor controllers connected in the network to the firstconveyor controller; and determining a first network address to assignto the first conveyor controller based on the plurality of networkaddresses.
 64. The method of claim 60, further comprising: in responseto the user input to the first conveyor controller to automaticallyconfigure the first conveyor controller, transmitting a request for asecond network address associated with the second conveyor controller tothe second conveyor controller; and generating a list of potentialnetwork addresses for the first conveyor controller based on at leastthe second network address.
 65. The method of claim 64, furthercomprising: broadcasting a request for a network address for eachconveyor controller connected in a network with the first conveyorcontroller; and selecting a first network address from the list ofpotential network addresses that does not match any other networkaddress for another conveyor controller connected in the network withthe first conveyor controller.
 66. A conveyor controller, comprising: aplurality of network interfaces connected to a network; at least oneuser interface; at least one processing unit; a memory; and program coderesident in the memory, the program code configured to be executed bythe at least one processing unit to request configuration data from asecond conveyor controller connected to the conveyor controller inresponse to user input with the at least one user interface toautomatically configure the conveyor controller, and store theconfiguration data in the conveyor controller in response to receivingthe configuration data.
 67. The conveyor controller of claim 66, whereinthe plurality of network interfaces includes a first and second networkinterface, the second conveyor controller connected to the first networkinterface and a third conveyor controller connected to the secondnetwork interface.
 68. The conveyor controller of claim 66, wherein theprogram code is further configured to broadcast a request for a networkaddress for each conveyor controller connected in the network with theconveyor controller in response to user input with the at least one userinterface to automatically configure the conveyor controller.
 69. Theconveyor controller of claim 68, wherein the program code is furtherconfigured to receive a plurality of network addresses associated with aplurality of conveyor controllers connected in the network to theconveyor controller, and determine a first network address to assign tothe first conveyor controller based on the plurality of networkaddresses.
 70. The conveyor controller of claim 66, wherein the programcode is further configured to transmit a request for a second networkaddress associated with the second conveyor controller to the secondconveyor controller in response to user input with the at least one userinterface to automatically configure the conveyor controller, andgenerate a list of potential network addresses for the first conveyorcontroller based on at least the second network address.
 71. Theconveyor controller of claim 70, wherein the program code is furtherconfigured to broadcast a request for a network address for eachconveyor controller connected in the network with the conveyorcontroller, and select a first network address from the list ofpotential network addresses that does not match any other networkaddress for another conveyor controller connected in the network withthe conveyor controller.
 72. A program product, comprising: program codeconfigured to be executed by at least one processing unit to requestconfiguration data from a second conveyor controller connected to theconveyor controller in response to user input with the at least one userinterface to automatically configure the conveyor controller, and storethe configuration data in the conveyor controller in response toreceiving the configuration data; and a non-transitory computer readablemedium bearing the program code.
 73. A method of controlling at least aportion of a conveyor, comprising: monitoring a motorized roller for atleast partial rotation thereof; in response to detecting the at leastpartial rotation of the motorized roller, determining a length of timefor the at least partial rotation; in response to determining that thelength of time is greater than a target time, activating the motorizedroller.
 74. The method of claim 73, wherein activating the motorizedroller includes: supplying a voltage signal to the motorized roller. 75.The method of claim 73, further comprising: transmitting a message to aconveyor controller indicating that the motorized roller has beenactivated.
 76. The method of claim 73, further comprising: deactivatingthe motorized roller after a target period of time.
 77. The method ofclaim 73, further comprising: deactivating the motorized roller after atarget period of time during which an article is not detected on theconveyor.
 78. The method of claim 73, further comprising: in response toreceiving a message from a conveyor controller downstream a predefineddirection of travel indicating that there is jam, deactivating themotorized roller.
 79. The method of claim 78, wherein deactivating themotorized roller includes: gradually reducing a rate of rotation of themotorized roller.
 80. The method of claim 73, further comprising:deactivating the motorized roller by gradually reducing a rate ofrotation of the motorized roller.
 81. The method of claim 73, whereinactivating the motorized roller includes: gradually increasing a rate ofrotation of the motorized roller.
 82. A conveyor controller, comprising:at least one user interface; at least one processing unit; a memory; andprogram code resident in the memory, the program code configured to beexecuted by the at least one processing unit to monitor a roller for atleast partial rotation thereof, determine a length of time for at leastpartial rotation of the roller in response to detecting the at leastpartial rotation of the roller, and activating the motorized roller inresponse to determining that the length of time is greater than a targettime.
 83. The conveyor controller of claim 82, the program code furtherconfigured to supply a voltage signal to the motorized roller.
 84. Theconveyor controller of claim 82, the program code further configured totransmit a message to a conveyor controller indicating that themotorized roller has been activated.
 85. The conveyor controller ofclaim 82, the program code further configured to deactivate themotorized roller after a target period of time.
 86. The conveyorcontroller of claim 82, the program code further configured todeactivate the motorized roller after a target period of time duringwhich an article is not detected on the conveyor.
 87. The conveyorcontroller of claim 82, the program code further configured to, inresponse to receiving a message from a conveyor controller downstream apredefined direction of travel indicating that there is jam, deactivatethe motorized roller.
 88. The conveyor controller of claim 87, theprogram code further configured to gradually reduce a rate of rotationof the motorized roller.
 89. The conveyor controller of claim 82, theprogram code further configured to deactivate the motorized roller bygradually reducing a rate of rotation of the motorized roller
 90. Theconveyor controller of claim 82, the program code further configured togradually increase a rate of rotation of the motorized roller.
 91. Aprogram product, comprising: program code configured to be executed byat least one processing unit to monitor a roller for at least partialrotation thereof, determine a length of time for at least partialrotation of the roller in response to detecting the at least partialrotation of the roller, and activating the motorized roller in responseto determining that the length of time is greater than a target time;and a non-transitory computer readable medium bearing the program code.92. A method of controlling a conveyor, comprising: in response to adetermination to prevent rotation of a motorized roller, identifying arotational position associated with the motorized roller when themotorized roller is stopped; and in response to an external force on themotorized roller, applying a voltage signal to the motorized roller tomaintain the roller at the identified rotational position.
 93. Themethod of claim 92, wherein applying the voltage signal comprises:applying a voltage signal to cause the motorized roller to rotate atleast partially against a predefined direction corresponding to adirection of travel.
 94. The method of claim 92, wherein applying thevoltage signal comprises: applying a voltage signal to cause themotorized roller to rotate at least partially in a predefined directioncorresponding to a direction of travel.
 95. The method of claim 92,wherein the voltage signal energizes one winding of a motor of themotorized roller.
 96. The method of claim 92, wherein the voltage signalenergizes two windings of a motor of the motorized roller.
 97. Themethod of claim 92, further comprising: storing the rotational positionof the motorized roller; and in response to the external force on themotorized roller, analyzing the rotation of the motorized roller todetermine whether to cause the motorized roller to rotate at leastpartially against a predefined direction corresponding to a direction oftravel or at least partially in the predefined direction correspondingto the direction of travel.
 98. The method of claim 92, furthercomprising: controlling a brake to halt rotation of the motorizedroller.
 99. The method of claim 92, wherein the voltage signal maintainsthe roller at the identified rotational position to maintain an articleon at least a portion of the conveyor at a predetermined position. 100.A conveyor controller, comprising: at least one processing unit; amemory; and program code resident in the memory, the program codeconfigured to be executed by the at least one processing unit toidentify a rotational position associated with the motorized roller whenthe motorized roller is stopped in response to a determination toprevent rotation of a motorized roller and apply a voltage signal to themotorized roller to maintain the roller at the identified rotationalposition in response to an external force on the motorized roller. 101.The conveyor controller of claim 100, wherein the program code isfurther configured to apply a voltage signal to cause the motorizedroller to rotate at least partially against a predefined directioncorresponding to a direction of travel.
 102. The conveyor controller ofclaim 100, wherein the program code is further configured to apply avoltage signal to cause the motorized roller to rotate at leastpartially in a predefined direction corresponding to a direction oftravel.
 103. The conveyor controller of claim 100, wherein the voltagesignal energizes one winding of a motor of the motorized roller. 104.The conveyor controller of claim 100, wherein the voltage signalenergizes two windings of a motor of the motorized roller.
 105. Theconveyor controller of claim 100, wherein the program code is furtherconfigured to store the rotational position of the motorized roller and,in response to the external force on the motorized roller, analyze therotation of the motorized roller to determine whether to cause themotorized roller to rotate at least partially against a predefineddirection corresponding to a direction of travel or at least partiallyin the predefined direction corresponding to the direction of travel.106. The conveyor controller of claim 100, wherein the program code isfurther configured to control a brake to halt rotation of the motorizedroller.
 107. The conveyor controller of claim 100, wherein the voltagesignal maintains the roller at the identified rotational position tomaintain an article on at least a portion of the conveyor at apredetermined position.
 109. A program product, comprising: program codeconfigured to be executed by at least one processing unit to identify arotational position associated with the motorized roller when themotorized roller is stopped in response to a determination to preventrotation of a motorized roller and apply a voltage signal to themotorized roller to maintain the roller at the identified rotationalposition in response to an external force on the motorized roller; and anon-transitory computer readable medium bearing the program code.
 110. Amethod of controlling at least a portion of a conveyor with a conveyorcontroller, comprising: querying a motorized roller for data associatedtherewith; in response to receiving the data, analyzing the data todetermine an operational characteristic associated with the motorizedroller; and controlling the motorized roller based at least in part uponthe determined operational characteristic.
 111. The method of claim 110,wherein the operational characteristic is a gear ratio of a gear box forthe motorized roller, the method further comprising: determining, fromthe gear ratio, a distance the motorized roller rotates in response to avoltage signal.
 112. The method of claim 111, wherein the voltage signalis a momentary voltage signal.
 113. The method of claim 110, wherein theoperational characteristic indicates a power rating of the motorizedroller, the method further comprising: determining a current thresholdassociated with the motorized roller that indicates a level of currentabove which the motorized roller should not be operated.
 114. A conveyorcontroller, comprising: at least one processing unit; a memory; andprogram code resident in the memory, the program code configured to beexecuted by the at least one processing unit to query a motorized rollerfor data associated therewith, in response to receiving the data,analyze the data to determine an operational characteristic associatedwith the motorized roller, and control the motorized roller based atleast in part upon the determined operational characteristic.
 115. Theconveyor controller of claim 114, wherein the operational characteristicis a gear ratio of a gear box for the motorized roller, the program codefurther configured to determine, from the gear ration, a distance themotorized roller rotates in response to a voltage signal.
 116. Theconveyor controller of claim 115, wherein the voltage signal is amomentary voltage signal.
 117. The conveyor controller of claim 114,wherein the operational characteristic indicates a power rating of themotorized roller, the program code further configured to determine acurrent threshold associated with the motorized roller that indicates alevel of current above which the motorized roller should not beoperated.
 118. A program product, comprising: program code configured tobe executed by at least one processing unit to query a motorized rollerfor data associated therewith, in response to receiving the data,analyze the data to determine an operational characteristic associatedwith the motorized roller, and control the motorized roller based atleast in part upon the determined operational characteristic; and anon-transitory computer readable medium bearing the program code.
 119. Amethod of controlling at least a portion of a conveyor with a conveyorcontroller, comprising: operating a motorized roller to rotate in afirst direction corresponding to a direction of travel; and in responseto detecting that a jam has occurred, operating the motorized roller torotate in a second direction opposite the first direction.
 120. Themethod of claim 119, wherein the motorized roller is operated to rotatein the second direction for a target period of time.
 121. The method ofclaim 119, wherein detecting that the jam has occurred includes:determining that a sensor indicates that an article is present on the atleast a portion of the conveyor for a target period of time.
 122. Themethod of claim 119, wherein detecting that the jam has occurredincludes: determining that a current level of a voltage signal used tooperate the motorized roller has exceeded a high target level for atarget period of time.
 123. A conveyor controller, comprising: at leastone processing unit; a memory; and program code resident in the memory,the program code configured to be executed by the at least oneprocessing unit to operate a motorized roller to rotate in a firstdirection corresponding to a direction of travel and, in response todetecting that a jam has occurred, operate the motorized roller torotate in a second direction opposite the first direction.
 124. Theconveyor controller of claim 123, wherein the program code is furtherconfigured to operate the motorized roller in the second direction for atarget period of time.
 125. The conveyor controller of claim 123,wherein the program code is further configured to determine that asensor indicates that an article is present on the at least a portion ofthe conveyor for a target period of time.
 126. The conveyor controllerof claim 123, wherein the program code is further configured to detectthat a jam has occurred in response to determining that a current levelof a voltage signal used to operate the motorized roller has exceeded ahigh target level for a target period of time.
 127. A program product,comprising: program code configured to be executed by at least oneprocessing unit to operate a motorized roller to rotate in a firstdirection corresponding to a direction of travel and, in response todetecting that a jam has occurred, operate the motorized roller torotate in a second direction opposite the first direction; and anon-transitory computer readable medium bearing the program code.
 128. Amethod of determining information about an article being conveyed uponat least a portion of a conveyor, the method comprising: sensing acurrent of a signal used to operate a motorized roller; and determininga weight associated with the article based upon the sensed current. 129.The method of claim 128, further comprising: determining a number ofrotations during which the signal used to operate the motorized rolleris at the sensed current; and determining a length of the article basedupon the determined number of rotations.
 130. The method of claim 128,further comprising: determining a time during which the signal used tooperate the motorized roller is at the sensed current; and determining alength of the article based upon the determined time.
 131. The method ofclaim 130, wherein determining the length of the article includes:determining the length of the article based additionally upon the speedof the operation of the motorized roller.
 132. A conveyor controller,comprising: at least one processing unit; a memory; and program coderesident in the memory, the program code configured to be executed bythe at least one processing unit to sense a current of a signal used tooperate a motorized roller and determine a weight associated with thearticle based upon the sensed current.
 133. The conveyor controller ofclaim 132, wherein the program code is further configured to determine anumber of rotations during which the signal used to operate themotorized roller is at the sensed current and determine a length of thearticle based upon the determined number of rotations.
 134. The conveyorcontroller of claim 132, wherein the program code is further configuredto determine a time during which the signal used to operate themotorized roller is at the sensed current and determine a length of thearticle based upon the determined time.
 135. The conveyor controller ofclaim 134, wherein the program code is further configured to determinethe length of the article based additionally upon the speed of theoperation of the motorized roller.
 136. A program product, comprising:program code configured to be executed by at least one processing unitto sense a current of a signal used to operate a motorized roller anddetermine a weight associated with the article based upon the sensedcurrent; and a non-transitory computer readable medium bearing theprogram code.
 137. A method of determining information about an articlebeing conveyed upon at least a portion of a conveyor, the methodcomprising: as the article is conveyed along the at least a portion ofthe conveyor, determining a time during which a photo-eye detects thearticle; and determining a length associated with the article based uponthe determined time.
 138. The method of claim 137, further comprising:determining the length of the article additionally based upon the speedof the operation of a motorized roller utilized to convey the articlealong the at least a portion of the conveyor.
 139. A conveyorcontroller, comprising: at least one processing unit; a memory; andprogram code resident in the memory, the program code configured to beexecuted by the at least one processing unit to determine a time duringwhich a photo-eye detects an article as the article is conveyed alongthe at least a portion of the conveyor and determine a length associatedwith the article based upon the determined time.
 140. The conveyorcontroller of claim 139, wherein the program code is further configuredto determine the length of the article additionally based upon the speedof the operation of a motorized roller utilized to convey the articlealong the at least a portion of the conveyor.
 141. A program product,comprising: program code configured to be executed by at least oneprocessing unit to determine a time during which a photo-eye detects anarticle as the article is conveyed along the at least a portion of theconveyor and determine a length associated with the article based uponthe determined time; and a non-transitory computer readable mediumbearing the program code.
 142. A method of controlling at least aportion of a conveyor with a conveyor controller, comprising:determining a rate of rotation associated with a motorized roller; ifthe rotation of the motorized roller does not exceed a target speed,connecting a first voltage signal generated by the rotation of themotorized roller to a power supply of the conveyor controller to supplythe power supply with energy generated by the motorized roller; and ifthe rotation of the motorized roller exceeds the target speed, supplyinga second voltage signal to the motorized roller to reduce the rate ofrotation thereof.
 143. A conveyor controller, comprising: at least oneprocessing unit; a memory; and program code resident in the memory, theprogram code configured to be executed by the at least one processingunit to determine a rate of rotation associated with a motorized roller,connect a first voltage signal generated by the rotation of themotorized roller to a power supply of the conveyor controller to supplythe power supply with energy generated by the motorized roller if therotation of the motorized roller does not exceed a target speed, andsupply a second voltage signal to the motorized roller to reduce therate of rotation thereof if the rotation of the motorized roller exceedsthe target speed.
 144. A program product, comprising: program codeconfigured to be executed by at least one processing unit to determine arate of rotation associated with a motorized roller, connect a firstvoltage signal generated by the rotation of the motorized roller to apower supply of the conveyor controller to supply the power supply withenergy generated by the motorized roller if the rotation of themotorized roller does not exceed a target speed, and supply a secondvoltage signal to the motorized roller to reduce the rate of rotationthereof if the rotation of the motorized roller exceeds the targetspeed; and a non-transitory computer readable medium bearing the programcode.
 145. A method of controlling at least a portion of a conveyor witha conveyor controller, comprising: determining whether a current througha motorized roller is associated with a low level to indicate that themotorized roller is conveying a first article; in response todetermining that the motorized roller is conveying the first article,determining whether the current through the motorized roller isassociated with a high level to indicate that the first article hasencountered a second article; and in response to determining that thefirst article has jammed or encountered a second article, conveying thefirst and second articles simultaneously and without substantial gapthere between during such conveyance.
 146. The method of claim 145,further comprising: supplying a voltage signal to the motorized roller;and deactivating the motorized roller after a target period of timeduring which a current level of the voltage signal has not reached a lowtarget level and a high target level.
 147. The method of claim 145,further comprising: supplying a voltage signal to the motorized roller;and deactivating the motorized roller after a target period of timeduring which a current level of the voltage signal has reached a lowtarget level.
 148. The method of claim 145, further comprising:supplying a voltage signal to the motorized roller; and deactivating themotorized roller when a current level of the voltage signal has reacheda high target level.
 149. A conveyor controller, comprising: at leastone processing unit; a memory; and program code resident in the memory,the program code configured to be executed by the at least oneprocessing unit to determine whether a current through a motorizedroller is associated with a low level to indicate that the motorizedroller is conveying a first article, determine whether the currentthrough the motorized roller is associated with a high level to indicatethat the first article has encountered a second article in response todetermining that the motorized roller is conveying the first article,and, in response to determining that the first article has jammed orencountered a second article, convey the first and second articlessimultaneously and without substantial gap there between during suchconveyance.
 150. The conveyor controller of claim 149, wherein theprogram code is further configured to supply a voltage signal to themotorized roller and deactivate the motorized roller after a targetperiod of time during which a current level of the voltage signal hasnot reached a low target level and a high target level.
 151. Theconveyor controller of claim 149, wherein the program code is furtherconfigured to supply a voltage signal to the motorized roller anddeactivate the motorized roller after a target period of time duringwhich a current level of the voltage signal has reached a low targetlevel.
 152. The conveyor controller of claim 149, wherein the programcode is further configured to supply a voltage signal to the motorizedroller and deactivate the motorized roller when a current level of thevoltage signal has reached a high target level.
 153. A program product,comprising: program code configured to be executed by at least oneprocessing unit to determine whether a current through a motorizedroller is associated with a low level to indicate that the motorizedroller is conveying a first article, determine whether the currentthrough the motorized roller is associated with a high level to indicatethat the first article has encountered a second article in response todetermining that the motorized roller is conveying the first article,and, in response to determining that the first article has jammed orencountered a second article, convey the first and second articlessimultaneously and without substantial gap therebetween during suchconveyance; and a non-transitory computer readable medium bearing theprogram code.
 154. A method of controlling at least a portion of aconveyor with a conveyor controller in a conveyor system having at leastone downstream conveyor controller and at least one upstream conveyorcontroller to the conveyor controller, the method comprising: sending amessage to the downstream conveyor controller to request data todetermine whether at least a portion of the conveyor controlled therebyis occupied by an article; if the at least a portion of the conveyorcontrolled by the downstream conveyor controller is not occupied by anarticle, operating a motorized roller to convey an incoming article at atarget speed; and if the at least a portion of the conveyor controlledby the downstream conveyor controller is occupied by an article,operating the motorized roller to convey an incoming article at anadjusted target speed that is slower than the target speed.
 155. Themethod of claim 154, wherein the message is sent in response to anotification from the upstream conveyor controller indicating thetransfer of control of the incoming article from the upstream conveyorcontroller to the conveyor controller.
 156. The method of claim 154,further comprising: receiving a message from the downstream conveyorcontroller that includes data indicating whether the at least a portionof the conveyor controlled by the downstream conveyor controller isoccupied by an article.
 157. The method of claim 154, furthercomprising: determining whether a first portion or a second portion ofthe conveyor controlled by the downstream conveyor controller isoccupied by the article; and setting the adjusted target speed to afirst target speed when the first portion of the conveyor is occupied bythe article; and setting the adjusted target speed to a second targetspeed when the first portion of the conveyor is not occupied by thearticle but the second portion of the conveyor is occupied by thearticle, wherein the first target speed is lower than the second targetspeed.
 158. A conveyor controller, comprising: at least one processingunit; a memory; and program code resident in the memory, the programcode configured to be executed by the at least one processing unit tosending a message to a downstream conveyor controller to request data todetermine whether at least a portion of a conveyor controlled thereby isoccupied by an article, operating a motorized roller to convey anincoming article at a target speed if the at least a portion of theconveyor controlled by the downstream conveyor controller is notoccupied by an article, and operating the motorized roller to convey anincoming article at an adjusted target speed that is slower than thetarget speed if the at least a portion of the conveyor controlled by thedownstream conveyor controller is occupied by an article.
 160. Theconveyor controller of claim 158, wherein message is sent in response toa notification from an upstream conveyor controller indicating thetransfer of control of the incoming article from the upstream conveyorcontroller to the conveyor controller.
 161. The conveyor controller ofclaim 158, wherein the program code is further configured to receiving amessage from the downstream conveyor controller that includes dataindicating whether the at least a portion of the conveyor controlled bythe downstream conveyor controller is occupied by an article
 162. Theconveyor controller of claim 158, wherein the program code is furtherconfigured to determine whether a first portion or a second portion ofthe conveyor controlled by the downstream conveyor controller isoccupied by the article, set the adjusted target speed to a first targetspeed when the first portion of the conveyor is occupied by the article,and set the adjusted target speed to a second target speed when thefirst portion of the conveyor is not occupied by the article but thesecond portion of the conveyor is occupied by the article, wherein thefirst target speed is lower than the second target speed.
 163. A programproduct, comprising: program code configured to be executed by at leastone processing unit to sending a message to a downstream conveyorcontroller to request data to determine whether at least a portion of aconveyor controlled thereby is occupied by an article, operating amotorized roller to convey an incoming article at a target speed if theat least a portion of the conveyor controlled by the downstream conveyorcontroller is not occupied by an article, and operating the motorizedroller to convey an incoming article at an adjusted target speed that isslower than the target speed if the at least a portion of the conveyorcontrolled by the downstream conveyor controller is occupied by anarticle; and a non-transitory computer readable medium bearing theprogram code.